1 class Heap{ 2 private: 3 int m[1000]; 4 int size; 5 public: 6 Heap(int s) :size(s){} 7 Heap(int *num, int s) :size(s){ 8 f...
分类:
其他好文 时间:
2014-09-07 15:58:55
阅读次数:
240
个人感觉堆排序还是在排序算法中比较难懂的,看了一段时间。准备把其中的思路理一理。首先,堆分为大根堆和小根堆。堆是满足下列性质的数列{r1, r2, …,rn}: 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。那么如何进行排序呢? 1. 我们要把序列构建为堆,建堆的核心就是不断的调....
分类:
其他好文 时间:
2014-09-07 13:26:55
阅读次数:
205
堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
其他好文 时间:
2014-09-06 17:19:53
阅读次数:
210
堆的定义如下:n个元素的序列{k0,k1,...,ki,…,k(n-1)}当且仅当满足下关系时,称之为堆。"ki=k(2i),ki>=k(2i+1).(i=1,2,…,[n/2])"若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,若完全二叉树中每一个节点的值都大于...
分类:
其他好文 时间:
2014-09-05 19:44:31
阅读次数:
277
用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。插入排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/*....
分类:
编程语言 时间:
2014-09-05 17:57:31
阅读次数:
204
1. 快排 详见之前博文快速排序算法。 2. 堆排序 详见之前博文非递归方法的堆排序实现。 3. 简单排序(冒泡排序、选择排序和插入排序) 代码如下: #include #include #include #define N 20static void show(int *arr, int len)...
分类:
其他好文 时间:
2014-09-05 14:08:51
阅读次数:
198
简单选择
不稳定
最差时间:O(n)
平均时间:O(n)
最好时间:O(n)
空间:O(1)...
分类:
其他好文 时间:
2014-09-04 19:15:34
阅读次数:
194
1 //快速排序 2 public static int partion(T a[],int low,int high) 3 { 4 T pivo=a[low]; 5 while(low=0)13 {14 ...
分类:
其他好文 时间:
2014-09-04 18:51:19
阅读次数:
211
堆排序: 1 #include 2 //#include 3 4 void PrintArray(int data[] ,int length){ 5 int i; 6 for(i=0;iA[i]){21 largest=l;22 }23 else ...
分类:
其他好文 时间:
2014-09-04 04:11:17
阅读次数:
210
最近整理了下以前的资料。有的算法没有实现,嘿嘿,以后再补吧!
/**
*排序算法的分类如下:
*1.插入排序(直接插入排序、折半插入排序、希尔排序);
*2.交换排序(冒泡泡排序、快速排序);
*3.选择排序(直接选择排序、堆排序);
*4.归并排序;
*
关于排序方法的选择:
*(1..
分类:
编程语言 时间:
2014-09-03 15:06:27
阅读次数:
262