package com.ghj.util;public class sortAlgorithm> { // 交换索引i和索引j的值 private void swap(T[] data, int i, int j) { T tmp; tmp = data[i]...
分类:
编程语言 时间:
2015-05-05 18:38:18
阅读次数:
113
1.堆排序是利用堆的特性对记录序列进行排序的一种排序方法。好的那么堆得特性是什么呢?堆得定义:堆是满足下列性质的数列{r1, r2, …,rn}:
分类:
编程语言 时间:
2015-05-05 14:07:10
阅读次数:
110
优先队列是堆排序的一个具体应用。
优先队列分为如下几个操作:
1.INSERT(S,x)把元素x插入到优先队列中。
2.MAXIMUM(S):返回s中具有最大关键字的元素。
3.EXTRACT_MAX(S):去掉S中最大关键字的元素
4.INCREASE_KEY(S,x,k):将元素x的关键字值增加到k,k是不小于x的元素。
优先队列的应用:
1.共享计算机系统的作业调度。最大优先队...
分类:
编程语言 时间:
2015-05-04 10:05:49
阅读次数:
187
1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 const int N=15; 8 void change(int a[],int f,int t) 9 {10 int tmp=a[f];11 ...
分类:
编程语言 时间:
2015-05-04 01:08:13
阅读次数:
225
1.堆排序不仅拥有与归并排序一样的时间复杂度为o(nlgn),而且空间复杂度所占秩序额外的几个元素空间,这个又有插入排序的优势。
2.堆排序分为3部分,第一部分是保持堆的性质的函数MAX_HEAPIFY函数,用于保持堆的性质:父结点的值要大于子节点。
第二部分是创建大根堆的函数,BUILD_MAX_HEAP这个函数从第一...
分类:
编程语言 时间:
2015-05-03 23:45:15
阅读次数:
210
八大排序对比(转)排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:...
分类:
编程语言 时间:
2015-05-03 17:25:25
阅读次数:
224
// HeapSort.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#define LIST_MAX_SIZE 100
//顺序表
struct sqList{
int base[LIST_MAX_SIZE];
int len;
};
typedef sqList Heap;//顺序表作为堆排序的基本类型
//初始化顺序表
...
分类:
编程语言 时间:
2015-05-03 09:19:53
阅读次数:
146
关于堆排序的一些基本定义可参见我转载的另一篇博文。http://blog.csdn.net/u010275850/article/details/45311661
其实在学习堆的时候细心的同学就可以发现,只要依次保存删除操作的数据,就可以得到一个有序的序列。堆排序也是利用了这样的思想。
算法实现:
/*根据最大堆实现的堆排序*/
#include
#define LeftChild(i)...
分类:
编程语言 时间:
2015-04-29 11:43:14
阅读次数:
136
堆就是一个完全二叉树,堆要求是指 该节点大于它的两个子节点。而两个字节点大小不一定。堆排序的最坏时间复杂度为nlog(n),平均也为nlog(n),占用空间为o(1),是一种比较排序算法。堆排序也可以用于找最大的k个数。时间复杂度为klog(n),因为建堆后,每次循环实际上都生成一个最大数。下面见代...
分类:
编程语言 时间:
2015-04-28 11:16:36
阅读次数:
161
每次 从待排序序列中选择出一个最大(或者最小)的记录添加到有序序列的后面即为选择排序。 选择排序主要有:简单选择排序、树形选择排序、堆排序。1、简单选择排序基本思路:重复进行n趟选择,第i趟通过n-i次记录的比较,在n-i+1个记录中选取最小(或最大)的记录与第i个记录进行交换。void se...
分类:
编程语言 时间:
2015-04-28 08:16:43
阅读次数:
120