欢迎来到天天文库
浏览记录
ID:38738041
大小:37.24 KB
页数:11页
时间:2019-06-18
《【推荐】几种常用排序的代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.桶排序(1).实现思路(2).复杂度与稳定性时间复杂度:O(n)空间复杂度:O(k)稳定性:稳定(3).代码实现2.冒泡排序(4).实现思路(5).复杂度与稳定性时间复杂度:最差、平均都是O(n2),最好是O(n)空间复杂度:1稳定性:稳定(6).代码实现1.鸡尾酒排序CocktailSort(1).实现思路鸡尾酒排序(改进的冒泡排序),原理是对要排序的数组进行双向冒泡排序,双向冒泡排序又称为鸡尾酒排序。(2).复杂度与稳定性同冒泡排序(3).代码实现1.#includeusingnamespace
2、std;/**/////////鸡尾酒排序/双向冒泡排序(改进的冒泡排序)voidCocktailSort(int*a,intnsize){ inttail=nsize-1; for(inti=0;ii;--j)//第一轮,先将最小的数据排到前面 { if(a[j]3、 a[j-1]=temp; } } ++i; //原来i处数据已排好序,加12.for(j=i;ja[j+1]) { inttemp=a[j]; a[j]=a[j+1]; a[j+1]=temp; 4、} }1. tail--; //原tail处数据也已排好序,将其减1 }}voidOutPut(int*b,intnLength){ for(inti=0;i5、/sizeof(nData[0])); OutPut(nData,sizeof(nData)/sizeof(nData[0])); return1;}1.插入排序(1).实现思路插入排序就是先是一个有序的数据,然后把要插入的数据插到指定的位置,而排序首先给的就是无序的,我们怎么确定先得到一个有序的数据呢?答案就是:如果只有一个,当然是有序的咯。我们先拿一个出来,他是有序的,然后把数据一个一个插入到其中,那么插入之后是有序的,所以直到最后都是有序的。。哈哈。结果就出来了!当然在写的时候还是有一个技巧的,不需要开额外的6、数组,下标从第二个元素开始遍历知道最后一个,然后插入到前面已经有序的数据中。这样就不会浪费空间了。插入排序用处还是很多的,特别是链表中,因为链表是指针存放的,没有数组那么好准确的用下标表示,插入是简单有效的方法。嘻嘻。(2).复杂度与稳定性最差和平均时间复杂度:O(n2),最好是O(n)空间复杂度:O(1) (用于记录需要插入的数据)稳定性:稳定(1).代码实现A.从前向后查找的插入排序:[cpp] viewplaincopy1./**********************************************7、********** 2.*函数名称:InsertSort 3.*参数说明:pDataArray 无序数组; 4.* iDataNum为无序数据个数 5.*说明: 插入排序 6.*********************************************************/ 7.void InsertSort(int* pDataArray, int iDataNum) 8.{ 9. for (int i = 1; i < iDataNum; i++) //从第8、2个数据开始插入 10. { 11. int j = 0; 12. while (j < i && pDataArray[j] <= pDataArray[i]) //寻找插入的位置 13. j++; 14. 15
3、 a[j-1]=temp; } } ++i; //原来i处数据已排好序,加12.for(j=i;ja[j+1]) { inttemp=a[j]; a[j]=a[j+1]; a[j+1]=temp;
4、} }1. tail--; //原tail处数据也已排好序,将其减1 }}voidOutPut(int*b,intnLength){ for(inti=0;i5、/sizeof(nData[0])); OutPut(nData,sizeof(nData)/sizeof(nData[0])); return1;}1.插入排序(1).实现思路插入排序就是先是一个有序的数据,然后把要插入的数据插到指定的位置,而排序首先给的就是无序的,我们怎么确定先得到一个有序的数据呢?答案就是:如果只有一个,当然是有序的咯。我们先拿一个出来,他是有序的,然后把数据一个一个插入到其中,那么插入之后是有序的,所以直到最后都是有序的。。哈哈。结果就出来了!当然在写的时候还是有一个技巧的,不需要开额外的6、数组,下标从第二个元素开始遍历知道最后一个,然后插入到前面已经有序的数据中。这样就不会浪费空间了。插入排序用处还是很多的,特别是链表中,因为链表是指针存放的,没有数组那么好准确的用下标表示,插入是简单有效的方法。嘻嘻。(2).复杂度与稳定性最差和平均时间复杂度:O(n2),最好是O(n)空间复杂度:O(1) (用于记录需要插入的数据)稳定性:稳定(1).代码实现A.从前向后查找的插入排序:[cpp] viewplaincopy1./**********************************************7、********** 2.*函数名称:InsertSort 3.*参数说明:pDataArray 无序数组; 4.* iDataNum为无序数据个数 5.*说明: 插入排序 6.*********************************************************/ 7.void InsertSort(int* pDataArray, int iDataNum) 8.{ 9. for (int i = 1; i < iDataNum; i++) //从第8、2个数据开始插入 10. { 11. int j = 0; 12. while (j < i && pDataArray[j] <= pDataArray[i]) //寻找插入的位置 13. j++; 14. 15
5、/sizeof(nData[0])); OutPut(nData,sizeof(nData)/sizeof(nData[0])); return1;}1.插入排序(1).实现思路插入排序就是先是一个有序的数据,然后把要插入的数据插到指定的位置,而排序首先给的就是无序的,我们怎么确定先得到一个有序的数据呢?答案就是:如果只有一个,当然是有序的咯。我们先拿一个出来,他是有序的,然后把数据一个一个插入到其中,那么插入之后是有序的,所以直到最后都是有序的。。哈哈。结果就出来了!当然在写的时候还是有一个技巧的,不需要开额外的
6、数组,下标从第二个元素开始遍历知道最后一个,然后插入到前面已经有序的数据中。这样就不会浪费空间了。插入排序用处还是很多的,特别是链表中,因为链表是指针存放的,没有数组那么好准确的用下标表示,插入是简单有效的方法。嘻嘻。(2).复杂度与稳定性最差和平均时间复杂度:O(n2),最好是O(n)空间复杂度:O(1) (用于记录需要插入的数据)稳定性:稳定(1).代码实现A.从前向后查找的插入排序:[cpp] viewplaincopy1./**********************************************
7、********** 2.*函数名称:InsertSort 3.*参数说明:pDataArray 无序数组; 4.* iDataNum为无序数据个数 5.*说明: 插入排序 6.*********************************************************/ 7.void InsertSort(int* pDataArray, int iDataNum) 8.{ 9. for (int i = 1; i < iDataNum; i++) //从第
8、2个数据开始插入 10. { 11. int j = 0; 12. while (j < i && pDataArray[j] <= pDataArray[i]) //寻找插入的位置 13. j++; 14. 15
此文档下载收益归作者所有