摘要: 待 阅读全文
posted @ 2012-06-01 08:31 Newerth 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 希尔排序是直接插入排序算法的一种优化,其核心思想是分组进行直接插入排序,待整个序列中的记录基本有序时,再对全体记录进行一次直接插入排序。 稳定性:不稳定 实现: 1: void 2: shell_sort(int a[], int n) 3: { 4: int i, j, gap; 5: 6:... 阅读全文
posted @ 2012-06-01 08:31 Newerth 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 快速排序主要使用分治法的思想,步骤为: 1、从数列中挑出一个元素作为基准。 2、重新排列所有元素,所有比基准小的元素放在基准之前,比基准大的元素放在基准之后(等于基准的元素可以放在任意一边)。操纵结束后基准元素所在的位置就是排序后它应该在的位置。 3、递归地对基准左边的子数列和基准右边的子数列分别进行第1、2步操作,直至子数列的元素个数为1。 时间复杂度:O(n * logn) 稳定性:... 阅读全文
posted @ 2012-06-01 08:30 Newerth 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 通常所说的堆是指二叉堆,其定义为: n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系时,被称为堆:ki <= k2i 并且 ki <= k2i+1 , 或者 ki >= k2i 并且 ki >= k2i+1。 若将此序列看成是一个完全二叉树,则二叉树中所有非叶子结点的值都不大于(或者不小于)其左、右孩子结点的值,父结点的值比较大的叫做最大堆(或者大根堆),父结点比较小的叫做最小堆(或者... 阅读全文
posted @ 2012-06-01 08:30 Newerth 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 归并排序的核心思想是将两个已经排序的序列合并成一个序列,那如何得到两个已经排序的序列呢?我们知道, 如果一个序列只有一个元素,那该序列是已经排序的,这样我们就可以利用分治的思想,将未排序的序列划分成更小的序列,只到我们可以很方便的对小序列进行排序(比如划分到序列只有一个元素, 或者序列很小可以方便的使用其它排序算法进行排序),然后再将小序列逐次合并,得到最后的排序结果。 实现: ... 阅读全文
posted @ 2012-06-01 08:26 Newerth 阅读(234) 评论(0) 推荐(0) 编辑