我将对几种经典的排序算法进行一个小结,着重于代码的实现。排序算法有冒泡排序、快速排序、直接插入排序、希尔排序、选择排序等。排序算法1:冒泡排序算法原理:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素....
分类:
编程语言 时间:
2014-11-21 17:54:57
阅读次数:
237
希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行...
分类:
编程语言 时间:
2014-11-21 14:12:05
阅读次数:
223
一、什么是直接插入排序:
第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。
简单来说,就是把待排序的数组,分为有序组和无序组。假设数组有n个元素,初始有序组只有一个元素,无序组有n-1个元素。然后不断拿无序组的第一个元素与有序组的元素进行对比,将...
分类:
编程语言 时间:
2014-11-20 20:30:04
阅读次数:
263
现在已经把常见的9种内部排序算法都用C语言实现了,为了方便自己和大家查看,就弄了这么一个类似于导航目录的东西。
一、冒泡排序
冒泡排序(C语言版)
二、选择排序
选择排序(C语言版)
三、直接插入排序
直接插入排序(C语言版)
四、希尔排序
希尔排序(C语言版)
五、归并排序
归并排序(C语言版)
六、基数...
分类:
编程语言 时间:
2014-11-16 14:44:16
阅读次数:
211
1、插入排序1.1直接插入排序算法介绍: 直接插入排序(straight insertion sort)的做法是: 每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,...
分类:
编程语言 时间:
2014-11-14 20:56:24
阅读次数:
191
例一:public class Sort{ //插入排序/* 直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 设数组为a[0…n-1]。 1. 初始...
分类:
编程语言 时间:
2014-11-14 13:55:09
阅读次数:
251
插入排序的算法复杂度为O(n2),但假设序列为正序可提高到O(n),并且直接插入排序算法比較简单,希尔排序利用这两点得到了一种改进后的插入排序。一. 算法描写叙述希尔排序:将无序数组切割为若干个子序列,子序列不是逐段切割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小.....
分类:
编程语言 时间:
2014-11-13 14:35:56
阅读次数:
193
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
编程语言 时间:
2014-11-12 16:26:31
阅读次数:
253
首先通过图表比较不同排序算法的时间复杂度和稳定性。排序方法平均时间最坏情况最好情况辅助空间稳定性直接插入排序O(n2)O(n2)O(n)O(1)是冒泡排序O(n2)O(n2)O(n)O(1)是简单选择排序O(n2)O(n2)O(n2)O(1)是希尔排序-O(nlog2n)~O(n2)O(nlog2n...
分类:
编程语言 时间:
2014-11-06 14:38:58
阅读次数:
305