Posts Tagged ‘插入排序’

希尔排序

希尔排序是插入排序的扩展。希尔排序的一个特点是:子序列的构成不是简单的逐段分割,而是将相隔某个增量的记录组成一个子序列。希尔排序的一个关键是:其步长(也就是增量)的取法,通常认为步长序列中的数字互质很重要。 希尔排序的C/C++代码实现: void shell_insert(int sort_array[], int length, int h) {     int i, j, temp;     for (i = h; i < length; ++i)         if (sort_array[i] < sort_array[i-h]) {             temp = sort_array[i];             sort_array[i] = sort_array[i-h];           [...]

Read the rest of this entry »

简单排序方法

简单的排序方法主要是指直接插入排序、冒泡排序和简单选择排序。他们都是稳定的排序方法,平均时间复杂度都为O(n2),并且空间复杂度都为O(1)。 直接插入排序 直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。直接插入排序的运行时间和数据原始排列顺序密切相关。对于已经排好序(或已几乎排好序)的数据,插入排序的效率会比较高。 直接插入排序的C/C++代码实现: void insert_sort(int sort_array[], int length) {     int i, j;     for (i = 2; i < length; ++i)         if (sort_array[i] < sort_array[i-1]) {             sort_array[0] = sort_array[i];             sort_array[i] = sort_array[i-1];         [...]

Read the rest of this entry »