堆的定义、堆的存储和堆排序一. 堆的定义、堆的存储、堆排序在堆排序 Heap Sort中介绍的比较好,堆排序主要涉及两个问题:如何由一个无序序列构造初始堆?由于叶节点已经满足了堆的性质,所以只需从最后一个非叶子节点向下调整,然后从倒数第二个非叶子节点向下调整,...,最后从堆顶向下调整。这一过程可以...
分类:
编程语言 时间:
2015-05-27 11:49:33
阅读次数:
227
对排序的实现思路有两种第一种:1.构建最小堆。2.将最小堆的堆顶元素取出放到辅助数组的0号下标。3.重新调整成最小堆(向上调整) 4.重复2-3第二种:1.构建最大堆。2.将堆顶元素(0号)与最后一个元素调换位置。3.最后一个元素不变,剩下的数据调整成最大堆。 4.重复2-3。这里用的是第二种方式。...
分类:
编程语言 时间:
2015-05-27 00:58:17
阅读次数:
140
各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序一、冒泡排序(BubbleSort)1. 基本思想: 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。....
分类:
编程语言 时间:
2015-05-26 23:02:26
阅读次数:
289
主要针对于插入排序,交换(冒泡和快速),选择,堆排序,归并这几种排序的基本原理和时间复杂度,及空间复杂度的一个总结。
一、插入排序
基本执行过程:3 5 2 7 9 8
1、从小到大:从第二个数开始,每次比较都与前边的几个数进行比较
但是从大到小,要先与前边排好序的几个数中的最大的开始进行比较即倒序比较,依次往前推。
如:5 先与3进行比较,比3大,所以直接排在3的...
分类:
编程语言 时间:
2015-05-25 11:36:18
阅读次数:
241
template void Vector::sort(Rank lo, Rank hi) { //向量区间[lo, hi)排序
switch (rand() % 5) { //随机选取排序算法。可根据具体问题的特点灵活选取或扩充
case 1: bubbleSort(lo, hi); break; //起泡排序
case 2: sel...
分类:
其他好文 时间:
2015-05-25 10:10:01
阅读次数:
124
引言 本文从多个方面讲解了快速排序的知识点,包括快排分而治之的思想,以及他与归并排序注重点的不同,快排的性能,包括最优最差以及平均性能,并以均匀分布为例,证明了快排的平均性能是1.39*(n+1)logn,接下来又从熵的角度说明了一下快排为什么下界只能达到nlogn,为什么堆排比快排慢,而基排又能够...
分类:
其他好文 时间:
2015-05-25 09:50:36
阅读次数:
175
在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销。排序算法有非常多种,如我们最常用的快速排序和堆排序等算法,这些算法需要对序列中的数据进行比较,因为被称为基于比较的排序。基于比较的排序算法是不能突破O(NlogN)的。简单证明如下: .....
分类:
编程语言 时间:
2015-05-24 20:20:34
阅读次数:
138
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
For example,
Given [3,2,1,5,6,4] and k = 2, return 5.
...
分类:
其他好文 时间:
2015-05-23 18:25:13
阅读次数:
131
#include
using namespace std;
int left(int i){
return 2*i;
}
int right(int i){
return 2*i+1;
}
int parent(int i){
return i/2;
}
void maxHeapify(int *arr, int length, int i){
if(arr == 0 || i < 0)...
分类:
编程语言 时间:
2015-05-21 22:38:19
阅读次数:
150
桶排序_BUCKETSORT
桶排序的思想
桶排序的代码编写
总结桶排序_BUCKETSORT假设你有五百万份试卷,每份试卷的满分都是100分,如果要你对这些试卷按照分数进行排序,天噜啦,五百万份试卷啊,快速排序?堆排序?归并排序?面对这么多的数据,平均下来上面的每一种一种算法至少都要花费nlogn=5000000log5000000=111267433nlogn=5000000log5000000...
分类:
编程语言 时间:
2015-05-20 14:54:16
阅读次数:
136