给你一个二分查找这个很多公司面试啊 还有考试都要用到的 很重要 希望你能深入的理解的说
// int BinSearch(SeqList R,KeyType K)// { //在有序表R[1n]中进行二分查找,成功时返回结点的位置,失败时返回零// int low=1,high=n,mid; //置当前查找区间上、下界的初值// while(low<=high)// { //当前查找区间R[lowhigh]非空// mid=low+((high-low)/2);//使用 (low + high) / 2 会有整数溢出的问题// if(R[mid]key==K) // return mid; //查找成功返回// if(R[mid]key>K)// high=mid-1; //继续在R[lowmid-1]中查找// else// low=mid+1; //继续在R[mid+1high]中查找// }// return 0; //当low>high时表示查找区间为空,查找失败// } //BinSeareh
#include<stdioh>
#include<timeh>
#include<stdlibh>
int random() //产生随机数10-99范围的随机数
{
int num;
num = rand()%100;
return num;
}
void selectsort(int k[],int n) //选择法排序
{
int i,j,max,t;
for(i=0;i<n-1;i++)
{max=i;
for(j=i+1;j<n;j++)
if(k[j]>k[max])
max=j;
if(max!=i)
{t=k[max];
k[max]=k[i];
k[i]=t;
}
}
}
void main()
{
int a[20];
int i,t;
printf("这二十个随机数依次是:\n");
srand( (unsigned)time( NULL ) );
for(i=0;i<20;i++)
{
a[i]=random();
printf("%d ",a[i]);
}
selectsort(a,20);
printf("选择法排序的结果是:\n");
for(i=0;i<20;i++)
printf("%d ",a[i]);
printf("\n");
}
行了,你试试看吧。。。。
k==i 说明排序前k,i指向一个人的id,排序后还是指向一个人,所以没必要交换
strcmp(name[k],name[j])>0 strcmp 字符串比较函数,
这是一个选择排序算法,每趟求出最大人名的下标,并交换
以上就是关于怎么用C++(数据结构)编写选择排序的程序设计与实现全部的内容,包括:怎么用C++(数据结构)编写选择排序的程序设计与实现、怎样编程: 采用选择排序法对随机产生的20个100以内的无序整数按由大到小的顺序重、C语言程序设计 姓名排序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)