c++问题,关于排序和查找的,高手来

c++问题:先建立一个子函数,然后主函数调用,实现:我可以任意输入10个数,系统利用简单插入排序进行排序,然后我键盘输入其中一个数,利用有序表的对分查找进行查找,最后返回... c++问题:先建立一个子函数,然后主函数调用,实现:我可以任意输入10个数,系统利用简单插入排序进行排序,然后我键盘输入其中一个数,利用有序表的对分查找进行查找,最后返回。我写完没有运行出来,麻烦把可以运行的给我看,谢谢!
大致是这样的:
#include<iostream.h>
#include<stdlib.h>
//顺序有序表的对分查找
int SL_List<T>::search_SL_List(T *v,int n,T x)
{ int 1,j,k;
i=1;j=n;
while(i<=j)
{ k=(i+j)/2;
if(v[k-1]==x) return(k-1);
if(v[k-1]>x) j=k-1;
else i=k+1;
}
return(-1);
}
//简单插入排序
#define T double
//p 需要排序表(一维数组)的首地址
//n 需要排序的元素个数
void insort(T a[],int n)
{
int j,k;
T t;
for(j=1;j<n;j++)
{
t=a[j];
k=j-1;
while((k>=0)&&(a[k]>t))
{a[k+1]=a[k];k=k-1;}
a[k+1]=t;
}
return;
}
int main()
{
int i,a[10],b,c;
cout<<"输入10个数:"<<a[i]<<endl;
for(i=0;i<10;i++)
scanf("%d",a[i]);
printf("排序前的序列:\n");
insort(a+10,10); //对原序列进行插入排序
printf("排序后的序列:\n");
cout<<"输入要查找的数b:"<<endl;
cin>>b;
c=SL_List<T>::search_SL_List(T b);
printf("%d",&b);
return;
}
希望能尽可能在我的这个基础上修改,好的追加悬赏哦!
用c++,c++哦!尽可能在我的上面改哈!万分万分感谢!!!!!!!!!!
展开
 我来答
0791cy1123
2012-06-11 · TA获得超过202个赞
知道答主
回答量:115
采纳率:0%
帮助的人:103万
展开全部
您这是在哪里COPY过来的吧
int SL_List<T>::search_SL_List(T *v,int n,T x)
SL_List这个类在哪? 你要用模板,template<calss T>你声明了没有?
如果你只是单纯的做数字排序和查找,完全没必要用类和模板,对于我们初学者,只需要能实现功能即可。我给你写一段
int Search(int a[],size_t len,int key) //在长度为len的数组a中查找整数key
{
len = sizeof(a) / sizeof(a[0]);
int left = 0,right = len - 1; //二分法查找,两个边界,left和right.
while(1)
{
mid = (left + right) / 2;
if(key > a[mid])
left = mid + 1;
else if(key < a[mid]
right = mid - 1;
else
{
break;
return mid; //返回下表
}
if (right == left )
{
cout << " Not found ." << endl;
break;
return -1;
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iamagoodguy
2012-06-11 · TA获得超过840个赞
知道小有建树答主
回答量:175
采纳率:100%
帮助的人:94万
展开全部
//在VC6.0中编译通过
//如果有其他问题,追问我。。。 Orz
#include<iostream>
using namespace std;
#define MaxSize 10
void DirectInsertSort( int _data[], int _n){
int tmp;
for( int i = 1; i < _n; i++){
tmp = _data[i];
for( int j = i - 1; j >= 0; j--){
if( _data[j] >= tmp) _data[j+1] = _data[j];
else break;
}
_data[j+1] = tmp;
}
}
int BinarySearch( int _data[], int _n, int _aim){
int low = 0, mid, high = _n;
while( low <= high){
mid = ( low + high) / 2;
if( _aim == _data[mid]) return mid;
else if( _aim < _data[mid]) high = mid - 1;
else low = mid + 1;
}
return -1;
}
int main(){
int data[MaxSize], aim; //input
for( int i = 0; i < MaxSize; i++){
cout << "输入第" << i + 1 << "个数据:";
cin >> data[i];
}
DirectInsertSort( data, MaxSize); //sort
cout << "排序后的数列:" << endl;
for( i = 0; i < MaxSize; i++){
cout << "data[" << i << "] = " << data[i] << endl;
}
cout << "输入想找的数"; cin >> aim; //search
cout << "data[" << BinarySearch( data, MaxSize, aim);
cout << "] = " << aim << endl;
return( 0);
}
更多追问追答
追问
这个,,我都看不懂呀,这么说吧,我现在学《使用数据结构》这本书,这是老师布置的实验,要求有子函数,然后调用,子函数是书上的,,你这个太复杂,看不懂呀,,上面那个回答说我没有类,template没有声明什么的,大概就是我那个不对的问题,能不能改我的那个额?
追答
除了main函数,这才几行啊。。。0_o 别生气哦:我感觉你平时根本一节课没听。
这些是《数据结构》这门课这里面最简单的东东了耶。。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式