资源描述:
《常用排序算法26550》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、常用排序算法总结及C源程序*直接插入排序*//*思想:先将有序序列中的第1个元素看作是有序序列的子序列,然后从第2个记录开始逐个进行插入*//*直至整个序列变成按关键字非递减的有序序列为止。*/voidInsertSort(int*out,int*op,intlength){inti,j;intdata;memcpy(out,op,length*sizeof(int));for(i=1;i=0;j--) { ou
2、t[j+1]=out[j]; } out[j+1]=data;}}--------------------------------------------------------------------------------------------------------------------------------/*折半插入排序*//*思想:与折半查找类似*/voidBInsertSort(int*out,int*op,intlength){intlow,mid,high; inti,j,data;me
3、mcpy(out,op,length*sizeof(int));for(i=1;i=high+1;j--) out[j+1]=out[j]; out[j+1]=data;}}--------------------
4、------------------------------------------------------------------------------------------------------------/*冒泡算法*//*思想:*//*第一趟冒泡排序(比较第1个到第n个记录):*//*首先比较第1个元素和第2个元素的大小,若第1个比第2个小,则交换他们的值*//*接着比较第2个元素和第3个元素的大小……直到第n-1和第n个元素*//*第二趟冒泡排序(比较第1个到第n-1个记录)*/voidBubbleS
5、ort(int*out,int*op,intlength){inti,j;memcpy(out,op,length*sizeof(int));for(i=length-1;i>=0;i--){ for(j=0;jout[j+1]) { swap(out+j,out+j+1); } }}}------------------------------------------------------------------------------------------
6、--------------------------------------/*快速排序,对冒泡排序的一种改进*//*思想:通过一趟排序,将待排记录分为独立的两部分,其中一部分记录的关键字均比另一部分的关键字小*//*则可对这两部分记录继续进行排序,以达到整个序列有序*//*一趟快速排序的做法*//*附设两个指针low,high,分别指向第1个记录和第n个记录,设关键字枢纽为pivokey,指向第一个记录*//*1.首先从high位置向前搜索,直到搜到比pivokey小的记录,与pivokey进行交换*//*2.从l
7、ow位置向后搜索,知道搜到比pivokey大的记录,与pivokey进行交换*//*3.重复这两步,直到low=high为止*/intPartition(int*out,int*op,intlength,intlow,inthigh){ intpivokey; memcpy(out,op,length*sizeof(int)); pivokey=out[low]; while(lowpivokey&&low8、ap(out+high,&pivokey); while(out[low]