《冒泡法排序c21442.pdf》由会员分享,可在线阅读,更多相关《冒泡法排序c21442.pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、冒泡排序是非常容易理解和实现,以从小到大排序举例:设数组长度为 N。1比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2这样对数组的第 0 个数据到 N-1 个数据进行一次遍历后,最大的一个数据就“沉”到数组第 N-1 个位置。3N=N-1,如果 N 不为 0 就重复前面二步,否则排序完成。按照定义很容易写出代码:初始时,a0自成 1 个有序区,无序区为 a1.n-1。令 i=1 2.将 ai并入当前的有序区 a0i-1中形成 a0i的有序区间。3.i+并重复第二步直到 i=n-1。排序完成。下面给出严格按照定义书写的代码(由小到大排序):cpp view plainco
2、pyprint 1.void Insertsort1(int a,int n)2.3.int i,j,k;4.for(i=1;i=0;j-)8.if(aj 0;gap/=2)6.for(j=gap;j n;j+)/从数组第 gap 个元素开始 7.if(aj=0&ak temp)12.13.ak+gap=ak;14.k-=gap;15.16.ak+gap=temp;17.18.再将直接插入排序部分用 白话经典算法系列之二 直接插入排序的三种实现 中直接插入排序的第三种方法来改写下:cpp view plaincopyprint 1.void shellsort3(int a,int n)2.3.int i,j,gap;4.5.for(gap=n/2;gap 0;gap/=2)6.for(i=gap;i=0&aj aj+gap;j-=gap)8.Swap(aj,aj+gap);9.这样代码就变得非常简洁了。附注:上面希尔排序的步长选择都是从 n/2 开始,每次再减半,直到最后为 1。其实也可以有另外的更高效的步长选择,如果读者有兴趣了解,请参阅维基百科上对希尔排序步长的说明: