常见排序算法分析.doc
《常见排序算法分析.doc》由会员分享,可在线阅读,更多相关《常见排序算法分析.doc(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、常见排序算法分析一.常见排序算法的实现1.冒泡排序冒泡排序是非常容易理解和实现,以从小到大排序举例:设数组长度为N。1比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3N=N-1,如果N不为0就重复前面二步,否则排序完成。按照定义很容易写出代码:123456789101112void bubbleSort(int arr,int n)int i,j,t;for(i=0;in-1;i+)for(j=0;jn-i-1;j+)if(arrj+1X的值,6549,两者交换,此时I:=
2、3 )进行第三次交换后: 27 38 13 97 76 49 65( 按照算法的第五步将又一次执行算法的第三步从后开始找进行第四次交换后: 27 38 13 49 76 97 65( 按照算法的第四步从前面开始找大于X的值,9749,两者交换,此时J:=4 ) 此时再执行第三不的时候就发现I=J,从而结束一躺快速排序,那么经过一躺快速排序之后的结果是:27 38 13 49 76 97 65,即所以大于49的数全部在49的后面,所以小于49的数全部在49的前面。123456789101112131415161718192021void quicksort(vector &v, int left
3、, int right)if(left right)int key = vleft;int low = left;int high = right;while(low high)while(low key)high-; vlow = vhigh; while(low high & vlow key) low+;vhigh = vlowvlow = key; quicksort(v,left,low-1);quicksort(v,low+1,right);3.直接插入排序直接插入排序(straight insertion sort)的作法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适
4、位置,使有序表仍然有序。 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中; 依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。代码实现:12345678910111213141516void InsertSortArray()/循环从第二个数组元素开始,因为arr0作为最初已排序部分for(int i=1;i=0 & arrjtemp)arrj+1=arrj; j-;arrj+1=temp; 4.选择排序思想:首先设置一个变量保存元素下标,将该元素与其他元素进行比较。若大于其他元 素则变换其下标,比
5、较完后再判断其下标是否发生变化,若变化则交换两个元素的值,否则不变。经过一次比较,即可得出数列中的最小元素并将其放在数列的首 位。一次类推,经过n-1次比较即可得到n个元素从小到大的排列。12345678910111213141516int i , temp;for(i = 0 ; i 8 ; +i) scanf(%d , &xi);for(i = 0 ; i 7 ; +i)k = i;for(j = i + 1 ; j xj) k = j; if(k != i) temp = xk; xk = xi; xi = temp; 二.其他算法的分析1 快速排序(QuickSort)快速排序是一个就
6、地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。(1) 如果不多于1个数据,直接返回。(2) 一般选择序列最左边的值作为支点数据。(3) 将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。(4) 对两边利用递归排序数列。快速排序比大部分排序算法都要快。尽管我们可以在某些特殊的情况下写出比快速排序快的算法,但是就通常情况而言,没有比它更快的了。快速排序是递归的,对于内存非常有限的机器来说,它不是一个好的选择。 2 归并排序(MergeSort)归并排序先分解要排序的序列,从1分成2,2分成4,依次分解,当分解到只有1个一组的时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常见 排序 算法 分析
限制150内