堆的定义如下: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
堆可用于实现优先队列。 堆有两个性质:结构性和堆序性。 堆的结构性: 堆是一棵被完全填满的二叉树,有可能的例外是在底层,底层上的元素从左到右填入。这样的树称为完全二叉树。 一棵高为h的完全二叉树有2^h~2^(h+1)-1个节点。这意味着,完全二叉树的高是logN下取整。 完全二叉树很有规律,可用一...
分类:
其他好文 时间:
2014-09-04 22:12:40
阅读次数:
241
简单选择
不稳定
最差时间: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
/*堆排序(大顶堆)2011.9.14*/#include#includeusingnamespacestd;voidHeapAdjust(int*a,inti,intsize)//调整堆{intlchild=2*i;//i的左孩子节点序号intrchild=2*i+1;//i的右孩子节点序号int...
分类:
其他好文 时间:
2014-09-01 00:24:22
阅读次数:
285
当我们需要对链表进行排序时,由于不能对它的元素进行随机访问,所以更适合使用归并排序,大名鼎鼎的快速排序用到链表上,效率也很低,原因还是在于不能对链表中的元素进行随机访问,同理,采用堆排序更是不可能的事情。对单链表进行归并排序,单链表与数组相比只能顺序访问每个元素,因此在使用二路归并排序时关键在于找到...
分类:
其他好文 时间:
2014-08-31 22:48:52
阅读次数:
431