欢迎来到天天文库
浏览记录
ID:30208587
大小:59.23 KB
页数:13页
时间:2018-12-27
《10种排序算法地总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、10种排序算法总结排序算法有很多,所以在特定情景中使用哪一种算法很重要。为了选择合适的算法,可以按照建议的顺序考虑以下标准:(1)执行时间(2)存储空间(3)编程工作对于数据量较小的情形,(1)(2)差别不大,主要考虑(3);而对于数据量大的,(1)为首要。主要排序法有:一、冒泡(Bubble)排序——相邻交换二、选择排序——每次最小/大排在相应的位置三、插入排序——将下一个插入已排好的序列中四、壳(Shell)排序——缩小增量五、归并排序六、快速排序七、堆排序八、拓扑排序九、锦标赛排序十、基数排序一、冒泡(Bubb
2、le)排序----------------------------------Code从小到大排序n个数------------------------------------voidBubbleSortArray(){for(inti=1;ia[j+1])//比较交换相邻元素{inttemp;temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}}-------------------------------------
3、------------Code------------------------------------------------效率O(n²),适用于排序小列表。二、选择排序----------------------------------Code从小到大排序n个数--------------------------------voidSelectSortArray(){intmin_index;for(inti=0;i4、描选择最小项if(arr[j]5、。三、插入排序--------------------------------------------Code从小到大排序n个数-------------------------------------voidInsertSortArray(){for(inti=1;i=0&&arr[j]>temp)/*将temp与已排序元素从小到大比较,寻6、找temp应插入的位置*/{arr[j+1]=arr[j];j--;}arr[j+1]=temp;}}------------------------------Code--------------------------------------------------------------最佳效率O(n);最糟效率O(n²)与冒泡、选择相同,适用于排序小列表若列表基本有序,则插入排序比冒泡、选择更有效率。四、壳(Shell)排序——缩小增量排序-----------------------------------7、--Code从小到大排序n个数-------------------------------------voidShellSortArray(){for(intincr=3;incr<0;incr--)//增量递减,以增量3,2,1为例{for(intL=0;L<(n-1)/incr;L++)//重复分成的每个子列表{for(inti=L+incr;i=0&&arr[j]>temp){arr[j+8、incr]=arr[j];j-=incr;}arr[j+incr]=temp;}}}}--------------------------------------Code-------------------------------------------适用于排序小列表。效率估计O(nlog2^n)~O(n^1.5),取决于增量值的最初大小。
4、描选择最小项if(arr[j]5、。三、插入排序--------------------------------------------Code从小到大排序n个数-------------------------------------voidInsertSortArray(){for(inti=1;i=0&&arr[j]>temp)/*将temp与已排序元素从小到大比较,寻6、找temp应插入的位置*/{arr[j+1]=arr[j];j--;}arr[j+1]=temp;}}------------------------------Code--------------------------------------------------------------最佳效率O(n);最糟效率O(n²)与冒泡、选择相同,适用于排序小列表若列表基本有序,则插入排序比冒泡、选择更有效率。四、壳(Shell)排序——缩小增量排序-----------------------------------7、--Code从小到大排序n个数-------------------------------------voidShellSortArray(){for(intincr=3;incr<0;incr--)//增量递减,以增量3,2,1为例{for(intL=0;L<(n-1)/incr;L++)//重复分成的每个子列表{for(inti=L+incr;i=0&&arr[j]>temp){arr[j+8、incr]=arr[j];j-=incr;}arr[j+incr]=temp;}}}}--------------------------------------Code-------------------------------------------适用于排序小列表。效率估计O(nlog2^n)~O(n^1.5),取决于增量值的最初大小。
5、。三、插入排序--------------------------------------------Code从小到大排序n个数-------------------------------------voidInsertSortArray(){for(inti=1;i=0&&arr[j]>temp)/*将temp与已排序元素从小到大比较,寻
6、找temp应插入的位置*/{arr[j+1]=arr[j];j--;}arr[j+1]=temp;}}------------------------------Code--------------------------------------------------------------最佳效率O(n);最糟效率O(n²)与冒泡、选择相同,适用于排序小列表若列表基本有序,则插入排序比冒泡、选择更有效率。四、壳(Shell)排序——缩小增量排序-----------------------------------
7、--Code从小到大排序n个数-------------------------------------voidShellSortArray(){for(intincr=3;incr<0;incr--)//增量递减,以增量3,2,1为例{for(intL=0;L<(n-1)/incr;L++)//重复分成的每个子列表{for(inti=L+incr;i=0&&arr[j]>temp){arr[j+
8、incr]=arr[j];j-=incr;}arr[j+incr]=temp;}}}}--------------------------------------Code-------------------------------------------适用于排序小列表。效率估计O(nlog2^n)~O(n^1.5),取决于增量值的最初大小。
此文档下载收益归作者所有