插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,终于将全部无序区元素都移动到有序区完毕排序。要点:设立哨兵,作为暂时存储和推断数组边界之用。实现:VoidInsertSort(NodeL[],intlength){Inti,j;/...
分类:
编程语言 时间:
2014-10-12 16:54:48
阅读次数:
274
插入排序的算法复杂度为O(n2),但假设序列为正序可提高到O(n),并且直接插入排序算法比較简单,希尔排序利用这两点得到了一种改进后的插入排序。一. 算法描写叙述希尔排序:将无序数组切割为若干个子序列,子序列不是逐段切割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小.....
分类:
其他好文 时间:
2014-10-05 18:35:58
阅读次数:
197
一个数组有n个元素,假如前面n-1个元素已经排序好了,那么把第n个元素插入到前面n-1个元素,使得数组有序排列,就是插入排序了。
至于n-1个元素如何已经先排序好,那么我们可以假设前面n-2个元素已经排序好,把第n-1个元素插入到前面n-2个元素。
依次类推,直到只剩下一个元素,也就是第一个元素。排序完成。
代码如下:
#include
using namespace std;
...
分类:
其他好文 时间:
2014-09-30 09:28:52
阅读次数:
192
取一个小于n的整数作为第一个增量,把序列分组。所有距离为增量的倍数的元素放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量(第二个= 0 && guard = 1){ shellInsertSort(elements, di); //每次减半,最后增量必须为1 di =...
分类:
编程语言 时间:
2014-09-28 21:25:25
阅读次数:
187
将n个元素的数列分为已有序和无序两个部分。数列:{a1,a2,a3,a4,…,an}将该数列的第一元素视为有序数列,后面都视为无序数列:{{a1},{a2,a3,a4,…,an}}将无序数列中的元素插入到有序数列的对应位置,插入前通过比大小的方式找到其在有序数列中的对应位置。代码:以下代码在node...
分类:
编程语言 时间:
2014-09-28 16:03:12
阅读次数:
213
继上篇文章写到关于数据结构的了解,有了数据结构自然要有算法了,下面来看看关于算法的理解!
算法在考试中要求级别是非常高的,是考试中的重点难点。所以要好好重视起来。
下面是我画的一张图:
算法分为查找和排序。
查找中,顺序查找,二分查找的方法和特点,在学习这两种查找方式时可以对比着学习,这样会有更高的效率。备考级别(***)。
关于排序中的简单选择排序,直接插入排序和冒泡排序是考试...
分类:
其他好文 时间:
2014-09-26 20:08:09
阅读次数:
150
直接插入排序适合记录数比较少、给定序列基本有序的情况, 通常,插入排序呈现出二次排序算法中的最佳性能...
分类:
移动开发 时间:
2014-09-18 09:50:53
阅读次数:
233
算法思想(从小到大排序)
将待排序数组看左右两个序列,左序列有序,有序列无序。假设第一个数array[0]为有序列,那么array[1,N-1]为无序列.循环遍历无序列,找出array[i]在有序列中应该插入的位置,插入。例如一个乱序数组为{1,3,2,4 , 假如有序列为 { 1,3 } 无序列循环到2时 ,那么2在有序列中的位置应该是1 - 3 中间 , 所以 [ 3. . .2 )...
分类:
其他好文 时间:
2014-09-16 18:58:40
阅读次数:
329
希尔排序又称“缩小增量排序”。
它的基本思想是:先将整个待排记录序列分割成若干子序列分别进行直接插入排序,待整个序列中的记录”基本有序”时,(当增量为1时)再对记录进行一次直接插入排序。
可以看出希尔排序希尔排序是改进了的插入排序。
特点:
子序列的构成不是简单的”逐段分割”,而是将相隔某个”增量”的记录组成一个自序列。这使得希尔排序中...
分类:
其他好文 时间:
2014-09-15 19:35:49
阅读次数:
204