排序算法分类:内部排序(在排序过程中不需要访问外存就可以完成排序)外部排序内部排序分类:交换排序冒泡排序快速排序选择排序直接选择排序堆排序插入排序直接插入排序希尔排序合并排序外部排序:
常见的是多路归并算法,即将原文件分为多个能够一次装入内存一部分,分别把每一部分调入内存完成排序,然后对已经排序的....
分类:
其他好文 时间:
2014-06-29 14:23:42
阅读次数:
314
归并排序完全遵循分治模式,主要操作分为三步:1.分解:分解待排序的n个元素序列为2个n/2个元素的子序列。2.解决:使用归并排序递归的排序两个子序列。3.合并:合并两个已排序的子序列。最重要的步骤就是合并2个已经排序的序列。例如:A和B都是从小到大排序的序列。依次对比A的第一个元素和B的第一个元素,...
分类:
其他好文 时间:
2014-05-31 01:27:11
阅读次数:
268
前面讨论了几种排序算法,三种O(n2)时间复杂度的排序算法:插入,选择和冒泡和两种O(nlgn)的算法:快速排序和归并排序。这几种排序数组除了归并排序需要额外的数组开销。其他几个的空间复杂度都是O(1)。通过比较交换元素完成排序.计数排序是利用空间换取时间,增加了两个额外数组的开销,而且计数排序有一...
分类:
其他好文 时间:
2014-05-30 03:29:19
阅读次数:
241
1、归并排序 2、内排序和外排序 外排序的一个例子是外归并排序(External merge
sort),它读入一些能放在内存内的数据量,在内存中排序后输出为一个顺串(即是内部数据有序的临时文件),处理完所有的数据后再进行归并。比如,要对 900 MB
的数据进行排序,但机器上只有 100 MB 的...
分类:
其他好文 时间:
2014-05-30 00:13:46
阅读次数:
257
#includeusing namespace std;////写出快速排序,归并排序与堆排序int
adjustarray(int a[],int left,int right){ int x = a[left]; while(left x
&& left < right) righ...
分类:
其他好文 时间:
2014-05-28 21:32:19
阅读次数:
282
1.已知两个有序数组A,B,将它们合并为一个有序数组。利用到的是归并算法的思想。int*
combine(int a[],int n1,int b[],int n2){ int i = 0,j = 0,k = 0; int *c = new
int[n1+n2]; while(i<...
分类:
其他好文 时间:
2014-05-28 01:27:55
阅读次数:
213
算法:通过递归并限定上下限元素的值的范围可以计算package
com.bupt.acm.leetcode;public class ValidBinary { private class TreeNode{ int
val; TreeNode left; ...
分类:
数据库 时间:
2014-05-27 17:17:11
阅读次数:
345
出题:多人按照从低到高排成一个前后队列,如果前面的人比后面的高就认为是一个错误对;
例如:[176,178,180,170,171]中的错误对为 , , , , , 。
现在要求从一个整数序列中找出所有这样的错误对;分析:逆序对(Inversion Pair):在N个可判断大小的数中,逆序...
分类:
其他好文 时间:
2014-05-26 02:51:07
阅读次数:
278
快速排序也利用了分治的思想,跟归并排序排序相比减少了交换次数int partition(int
a[],int p,int r){ int x = a[r]; int i = p-1; int j; for(j = p;j<r;j++) {
if(a[j]...
分类:
其他好文 时间:
2014-05-26 02:47:46
阅读次数:
226
排序(一)
初级排序算法
选择排序
思想:首先,找到数组中最小的那个元素。其次,将它和数组的第一个元素交换位置。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。
【图例】
图中,x轴方向为数组的索引,y轴方向为待排序元素的值。
选择排序有两个很鲜明的特点:
运行时间和输入无关。为了找出最小的元素...
分类:
其他好文 时间:
2014-05-24 18:18:30
阅读次数:
492