我用随即数测试泛化
#include <ctime>
#include <iostream>
using namespace std;
int randNumber[10]={0};
int find(const int number,const int offset){
int count=0;
for(int i=0; i<sizeof randNumber/sizeof *randNumber; i++)
if(number>randNumber[i] )
count++;
return count+1;
}
对不起,没看见你问的是需要定位。用堆排序不合适。
这种问题应该用HASH技术,寻找一个合适的线性递增的HASH函数,那么就可以达到你的要求了。
如果不计空间,只求速度,可以用简单的HASH法:
int pos[MAX_INT]={0};
int val;
int i=0;
cout<<"输入整数序列:\n";
while (cin>>val)
{
pos[val]=i++;
}
cout<<"输入整数:";
cin>>val;
cout<<"整数"<<val<<"位于第"<<pos[val]<<"个位置。\n"