堆排序与高速排序,归并排序一样都是时间复杂度为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
/*堆排序(大顶堆)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