堆排序算法分析 什么是堆 ? ? ? ?我们这里讨论的堆是一种数据结构,而不是垃圾收集存储机制。(二叉)堆一个数组,它可以被看成一个近似的完全二叉树,即一棵树上的每一个结点对应数组中的某一个元素,除了最...
分类:
编程语言 时间:
2015-07-28 21:24:24
阅读次数:
143
本文将给出六大经典排序的实现。
简单排序算法:冒泡,插入,选择
改进排序算法:快排,归并,堆排以下排序用到的交换函数:void swap(int &A, int &B) {
int temp = A; A = B; B = temp;
}1. 冒泡排序2个相邻的元素相互比较,不满足顺序则交换;每遍历一次数组,使一个元素处于最终位置。
时间复杂度O(n2)O(n^2) 空间复杂度O(1)...
分类:
编程语言 时间:
2015-07-28 18:53:02
阅读次数:
151
Kth Largest Element in an ArrayTotal Accepted:13165Total Submissions:48240My SubmissionsQuestionSolutionFind thekth largest element in an unsorted arr...
分类:
编程语言 时间:
2015-07-28 17:45:12
阅读次数:
126
堆其实是一个完全二叉树堆分为大顶堆和小顶堆(index从0开始哦)大顶堆:key[i]>=key[2i+1]&&key[i]>=key[2i+2],大堆顶的关键字肯定是所有关键字中最大的小顶堆:key[i]<=key[2i+1]&&key[i]<=key[2i+2],小顶堆的堆顶的关键字是所有关键字...
分类:
编程语言 时间:
2015-07-28 12:52:22
阅读次数:
118
http://www.cnblogs.com/dolphin0520/archive/2011/10/06/2199741.html 堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:...
分类:
编程语言 时间:
2015-07-27 12:59:07
阅读次数:
130
LeetCode 之 Merge Sorted Array,本文给出详细算法思想与源码实现。...
分类:
编程语言 时间:
2015-07-27 11:11:56
阅读次数:
114
希尔排序
package ShellSort;import Utils.SortUtils;public class Demo { public static void shellSort(int[] a){ int temp,j;
int increment = a.length; do{
increment = incr...
分类:
编程语言 时间:
2015-07-26 22:44:00
阅读次数:
360
继上一篇实现基于堆的优先队列后,这次将利用上一次完成的基于堆的能够重复删除最大元素操作的优先队列来实现一种经典而优雅的排序算法,称之为堆排序。
堆排序可分为两个阶段:
1.构建堆:在堆的构建过程中,我们将原始数组重新组织安排进一个堆中;
2.下沉排序:从堆中按递减顺序取出所有元素并得到排序结果
具体的思想在下面的代码中有较为详细的注释:
/**
*
* @author seabea...
分类:
编程语言 时间:
2015-07-26 17:29:37
阅读次数:
142
1.三种选择排序(简单选择排序,树形选择排序,堆排序)#include#include#include#include#include#include #includeconst int INF=0X3f3f3f3f;using namespace std;typedef struct{ int.....
分类:
编程语言 时间:
2015-07-26 11:05:56
阅读次数:
112