摘要:本篇博客,介绍另一种数组排序算法:堆排序。算法用C实现。...
分类:
编程语言 时间:
2015-08-01 20:37:10
阅读次数:
186
1.在平时的学习中,很经常听到各种排序算法,各自有其优缺点。尝试自己用C++实现各排序算法,作为对算法的基础学习。 常见的内部排序:插入排序冒泡排序选择排序快速排序堆排序归并排序基数排序希尔排序
分类:
编程语言 时间:
2015-08-01 11:15:30
阅读次数:
141
冒泡排序、快速排序、堆排序的性能比较对照
排序方法 比较次数 移动次数 稳定性 辅助空间
最好 最差 最好 最差 最好 最差
冒泡排序 n n^2 0 n^2 是 1 1...
分类:
编程语言 时间:
2015-07-31 14:56:50
阅读次数:
129
首先是算法实现文件Sort.h,代码如下:
/*
* 实现了八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序
* 以及快速排序、归并排序、堆排序和LST基数排序
* @author gkh178
*/
#include
template
void swap_value(T &a, T &b)
{
T temp = a;
a = b;
b = temp;
}
//插入排序:时...
分类:
编程语言 时间:
2015-07-31 01:20:34
阅读次数:
116
首先是EightAlgorithms.java文件,代码如下:
import java.util.Arrays;
/*
* 实现了八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序
* 以及快速排序、归并排序、堆排序和LST基数排序
* @author gkh178
*/
public class EightAlgorithms {
//插入排序:时间复杂度o(n^2)...
分类:
编程语言 时间:
2015-07-30 21:29:55
阅读次数:
122
堆数据结构是一种数组对象,它可以被视为一科完全二叉树结构。它的特点是父节点的值大于(小于)两个子节点的值(分别称为最大堆和最小堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等。1、根结点若有子树,则子树一定也是堆。2、根结点一定大于(或小于)子结点。因为要求堆必须是完全二叉树,所以可以用线性的数据结构,比如数组,来实现堆。利用数组实现,则对于长为N的堆中的元素从0到N-1排列...
分类:
其他好文 时间:
2015-07-30 19:34:42
阅读次数:
414
转自:http://blog.csdn.net/morewindows/article/details/6709644/堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉...
分类:
编程语言 时间:
2015-07-30 16:52:43
阅读次数:
127
#include#include#include#define leftChild(i) (2*(i)+1)//交换void swap(int *a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}//堆下溯void...
分类:
编程语言 时间:
2015-07-30 11:11:08
阅读次数:
143
堆的定义如下:
n个元素的序列{k0,k1,...,ki,…,k(n-1)}当且仅当满足下关系时,称之为堆。
" ki=k2i,ki>=k2i+1.(i=1,2,…,[n/2])"
若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,
则完全二叉树中每一个节点的值的都大于或等于任意一个字节的值(如果有的话),称之为大顶堆。
则完全二叉树...
分类:
编程语言 时间:
2015-07-30 09:32:27
阅读次数:
152
package sort;import java.util.Scanner;public class HeapSort { public static int arr[]; static{ System.out.println("Please enter the array...
分类:
编程语言 时间:
2015-07-28 22:30:17
阅读次数:
108