Posted in 2009-12-20 3:50 PMJulius Chen
快速排序是应用最广泛的排序算法,也是目前认为最好的一种内部排序方法(就平均时间而言)。它采用分治(divide-and-conquer)的策略,通过一趟排序将待排记录分割成独立的两个部分,使其中的一部分记录关键字均比另一部分记录关键字小(大),然后分别对两个部分继续进行排序,以达到整个序列有序。 快速排序的C/C++代码实现: int partition(int sort_array[], int low, int high) { int pivotkey = sort_array[low]; while (low < high) { while (low < high && pivotkey <= sort_array[high]) –high; sort_array[low] = sort_array[high]; while (low < high && pivotkey >= sort_array[low]) ++low; [...]
Read the rest of this entry »
Posted in 2009-12-14 11:03 PMJulius Chen
简单的排序方法主要是指直接插入排序、冒泡排序和简单选择排序。他们都是稳定的排序方法,平均时间复杂度都为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 »