归并排序 归并排序是另一类不同的排序方法,所谓归并,就是把两个或者两个以上的有序表合并成一个新的有序表的过程。基本思想 将一个含有n个序列的有序表看成是n个长度为1的有序表,然后两两归并,得到[n/2]个长度为2的有序表,然后再两两归并,直到得到一个长度为n的有序表为止。example 初始值 【4...
分类:
其他好文 时间:
2014-08-17 16:58:42
阅读次数:
225
今天说的仍然是一中简单排序——冒泡排序,时间复杂度O(n^2)。 其基本思想是: 通过相邻元素之间的比较和交换使较小的元素逐渐从后向前移动,就像水底的气泡一样逐渐向上冒。 具体过程如下: 首先比较d[n]和d[n-1],若d[n]<d[n-1],则交换,使较小的元素前移,较大的元素后移;接着比较.....
分类:
其他好文 时间:
2014-08-17 11:38:12
阅读次数:
149
插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。
一、直接插入排序...
分类:
其他好文 时间:
2014-08-17 09:12:02
阅读次数:
211
都是两种效率高而且常用的排序方法,今天来总结下。 先说快排: 首先,快速排序的时间复杂度为nlogn,其思想实质为分治法。而这分治法的基本思想为以下三点: 1.先从数列中取出一个基准数。 2.在分治的过程中,比这个基准数小的数全部放到这个基准数的左边,反之则放到右边。 3.然后再对由第...
分类:
其他好文 时间:
2014-08-17 02:22:30
阅读次数:
186
插入排序的基本思想是:对于数组前边部分已经是排好序的了,对于接下来的元素查找其在前面的位置,插入之。如下图中1 2 4 7 已经排好序,接下来找到2的位置,插入到1和3之间。之后同样处理4和9.参考程序(C语言实现)如下:#includevoid Insection_Sort(int *A, in....
分类:
其他好文 时间:
2014-08-16 13:46:40
阅读次数:
182
快速排序法基本思想:
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
程序代码:
#include
...
分类:
其他好文 时间:
2014-08-15 18:01:09
阅读次数:
252
动态规划的基本思想:将一个问题分解为子问题递归求解,且将中间结果保存以避免反复计算。通经常使用来求最优解,且最优解的局部也是最优的。求解过程产生多个决策序列,下一步总是依赖上一步的结果,自底向上的求解。动态规划算法可分解成从先到后的4个步骤:1. 描写叙述一个最优解的结构,寻找子问题,对问题进行划分...
分类:
其他好文 时间:
2014-08-15 14:30:39
阅读次数:
116
冒泡排序的基本思想:
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
关于程序中4中冒泡排序写法的说明:
bubble_sort1:基本的冒泡排序的写法。
bubble_sort2:基本冒泡排序的不同写法,基本的冒泡排序是每...
分类:
其他好文 时间:
2014-08-15 12:51:44
阅读次数:
211
快速排序中的算法思想
1. 分治思想
分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然后将这些子问题的解组合为原问题的解。
我们可以利用分治思想将杂乱无序的数组Arr[p,,r]分为以下几个步骤
分类:
其他好文 时间:
2014-08-15 01:26:06
阅读次数:
222
伸展树和AVL树不一样,伸展树并不保证每次操作的时间复杂度为O(logn),而保证任何一个m个操作的序列总时间为O(mlogn)。伸展树的基本思想是:每个结点被访问时,使用AVL树的旋转操作把它移动到根。由于旋转是自底向上的,所以需要设置父亲指针,而不像AVL树那样以儿子为轴旋转。伸展操作(spla...
分类:
其他好文 时间:
2014-08-14 23:30:16
阅读次数:
280