随笔分类 -  排序

摘要:归并排序算法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的,然后再把所有的有序子序列合并。2-路归并排序示例:2-路归并排序的核心操作是:将一维数组中前后相邻的两个有序序列归并为一个有序序列。其算法如下: 1 void Merge(Elemtyp... 阅读全文
posted @ 2015-06-02 11:21 海东青飞吧! 阅读(134) 评论(0) 推荐(0) 编辑
摘要:基本思想:选择一个基准元素,通过一趟排序将待排的记录分割成两个独立的部分,其中一部分记录的值均比基准元素小,另一部分均比基准元素值大。然后分别对这两部分用同样的方法进行排序。代码如下: 1 void Qsort(int a[],int low,int high) 2 { 3 if(low=k... 阅读全文
posted @ 2015-06-02 10:42 海东青飞吧! 阅读(185) 评论(0) 推荐(0) 编辑
摘要:希尔排序又称“缩小增量排序”。它的基本思想如下:先将整个待排记录序列分成若干个子序列分别进行直接插入排序,等到整个序列中的记录“基本有序”了,再对全体记录进行一次直接插入排序。算法实现:我们这里简单处理增量序列:增量序列d={n/2,n/4,n/8....1}n为要排序数的个数。即:先将要排序的一组... 阅读全文
posted @ 2015-06-02 10:10 海东青飞吧! 阅读(152) 评论(0) 推荐(0) 编辑
摘要:下面我们来讲一下插入排序基本思想如下:将一个记录插入到已排序好的有序表中,从而得到一个新的有序表。实现要点,我们需要设立一个哨兵,作为临时存储和判断数组边界来用。直接插入的代码如下: 1 for(i=1;i=low;j--)15 {16 a[j]=a[j-1];//元素后移... 阅读全文
posted @ 2015-06-02 09:45 海东青飞吧! 阅读(234) 评论(0) 推荐(0) 编辑
摘要:上篇博客咱们讲了选择排序,不难发现,当数据较多时选择排序的效率就很低了。那么有没有另一种排序的方法可以提高一下效率呢?答案是肯定的。下面我们来讲一下冒泡排序。冒泡排序也是通过两重循环,外层循环和选择排序一样通过n-1次找最小(或最大)值,只是内循环的比较实现方式不同。它是通过n-1次找最大值得方式实... 阅读全文
posted @ 2015-06-02 09:09 海东青飞吧! 阅读(122) 评论(0) 推荐(0) 编辑
摘要:n个数的选择排序是一个两重循环的问题:外循环控制求最小值得次数,n个数求最小值,要用n-1循环;内循环是用来完成求最小值的过程,假定当前元素a[i]是最小值,假设内循环变量是j让a[i]与其后的所有元素a[j]逐个比较,i+1a[j]) 6 { 7 ... 阅读全文
posted @ 2015-06-02 08:57 海东青飞吧! 阅读(204) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示