2014年5月9日

排序算法学习之归并排序

摘要: 1. 归并排序原理:有长度为n的子序列a[n],可以将其看做n个长度为1的子序列,将相邻子序列两两归并后子序列数量减少一半,再对子序列进行两两归并,数量又减少一般,重复直到得到一个长度为n的子序列2. 实现归并操作的代码如下:/*array[s…m]和array[m+1…t]均已各自有序,合并使得a... 阅读全文

posted @ 2014-05-09 11:12 xfan_ 阅读(192) 评论(0) 推荐(0) 编辑

排序算法学习之堆排序

摘要: 一、堆与堆排序的产生及定义 在简单选择排序中,每次从n个元素中比较n-1次选取最小的元素,这很好理解,但是前面比较过的数据在之后还要重新比较,这将花费大量的运算时间。堆排序算法就很好的解决了这个问题,堆排序在每次选择到最小记录的同时会根据比较结果对其他数据进行调整,堆排序的时间复杂度为O(Nlog... 阅读全文

posted @ 2014-05-09 11:09 xfan_ 阅读(255) 评论(0) 推荐(0) 编辑

排序算法学习之快速排序

摘要: 快速排序基本思想:选取一个枢轴元素(图简单可选第一个),通过对序列一次遍历(中间涉及到数的交换),将该枢轴放置到序列合适位置,保证其左边数都比它小,右边数都比它大,然后利用递归思想对其左右两个子序列进行同样排序。快熟排序的基本实现过程:将枢轴元素key备份,序列头尾各设置一个游标——i和j,尾部... 阅读全文

posted @ 2014-05-09 11:06 xfan_ 阅读(167) 评论(0) 推荐(0) 编辑

排序算法学习之希尔排序

摘要: 直接插入排序对待排数量较少且基本有序的序列,其执行效率是非常高的,希尔排序正是利用了这点,将一个无序的序列拆分成几个子组,然后对几个子组分别进行插入排序。注意,这儿的分组并不是简单的{a1,a2,a3,b1,b2,b3,c1,c2,c3}(相同字母为一组),而是进行{a1,b1,c1,a2,b2... 阅读全文

posted @ 2014-05-09 11:03 xfan_ 阅读(171) 评论(0) 推荐(0) 编辑

排序算法学习之简单排序(冒泡排序,简单选择排序,直接插入排序)

摘要: 一、冒泡排序冒泡排序算是最基础的一种算法了,复杂度为O(N^2),其基本思想是:从最低端数据开始,两两相邻比较,如果反序则交换。代码如下:/*最基本的冒泡排序*/void BubbleSort1 (int n, int *array) /*little > big*/{ int i, j... 阅读全文

posted @ 2014-05-09 11:01 xfan_ 阅读(242) 评论(0) 推荐(0) 编辑

导航