排序:将一连串记录按照关键字的大小(从大到小或从小到大)进行排列。
稳定性:如果两个大小相同的关键字的相对位置在排序前和排序后是一样的(Ai等于Aj,排序前Ai 在Aj的前面,排序后Ai 还是在Aj的前面),那么这种算法就是稳定的。
稳定的排序算法有:冒泡排序、直接插入排序、归并排序、基数排序
不稳定的排序算法有:选择排序、快速排序、希尔排序、堆排序
冒泡排序:...
分类:
编程语言 时间:
2015-08-17 12:06:36
阅读次数:
194
GIF 动态图伪代码/* From Wikipedia, the free encyclopedia*/1.父子节点特征iParent = floor((i-1) / 2);iLeftChild = 2*i + 1;iRightChild = 2*i + 2;2.算法伪代码/* 保持原汁原味就不翻....
分类:
编程语言 时间:
2015-08-17 06:27:23
阅读次数:
176
排序:对一序列对象根据某个关键字进行排序;
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;
例如:插入排序、冒泡排序、归并排序、计数排序、基数排序、桶排序
不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;
例如:选择排序(5 8 5 2 9)、快速排序、堆排序
内排序:不占用额外内...
分类:
编程语言 时间:
2015-08-16 23:12:27
阅读次数:
172
如何建立这个堆呢。可以从空的堆开始,然后依次往堆中插入每一个元素,直到所有数都被插入(转移到堆中为止)。因为插入第i个元素的所用的时间是O(log i),所以插入所有元素的整体时间复杂度是O(NlogN),代码如下。n=0;
for(i=1;i<=m;i++)
{
n++;
h[ n]=a[ i]; //或者写成scanf("%d",&h[ n]);
siftup();
}...
分类:
编程语言 时间:
2015-08-16 09:26:00
阅读次数:
439
堆排序同直接选择排序一样是选择排序的一种。堆排序是借助一种数据结构——堆来完成排序,堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。
什么是堆:
关于二叉树这里就不叙述了。堆(二叉堆)可以视为一棵完全的二叉树,完全二叉树的一个“优秀”的性质是,除了最底层之外,每一层都是满的,这使得堆可以利用数组来表示(普通的一般的二叉树通常用链表作为基本容...
分类:
编程语言 时间:
2015-08-14 19:05:50
阅读次数:
161
建堆,以及对堆排序
代码:
#include
int h[101];//用来存放堆的数组
int n;//用来存储堆中元素的个数,就是堆的大小
//交换函数,用来交换堆中的俩个元素的值
void swap(int x,int y)
{
int t;
t=h[x];
h[x]=h[y];
h[y]=t;
}
//向下调整函数
void siftdown(int i)
{/...
分类:
编程语言 时间:
2015-08-13 12:09:32
阅读次数:
135
本文包括1.快速排序2.归并排序3.堆排序1.快速排序快速排序的基本思想是:采取分而治之的思想,把大的拆分为小的,每一趟排序,把比选定值小的数字放在它的左边,比它大的值放在右边;重复以上步骤,直到每个区间只有一个数。此时数组已经排序完成。快速排序最重要的是partition函数功能的实现,也就是将比...
分类:
编程语言 时间:
2015-08-12 18:19:22
阅读次数:
134
原文作者:http://www.cnblogs.com/skywang12345/p/3602162.html。在他基础上修改了一点堆排序介绍堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。因此,学习堆排序之前,有必要了解堆!若读者不熟悉堆,建议先了解堆(建议可以通过二叉堆,...
分类:
编程语言 时间:
2015-08-11 20:56:12
阅读次数:
172
八大排序算法阅读目录1. 直接插入排序(Straight Insertion Sort)2. 希尔排序(Shells Sort)3. 直接选择排序(Straight Selection Sort)4. 堆排序(Heap Sort)5. 冒泡排序(Bubble Sort)6. 快速排序(Quick S...
分类:
编程语言 时间:
2015-08-10 00:15:04
阅读次数:
263
一、综述
快速排序是交换排序中的一种,平均算法复杂度是O(nlogn),最坏O(n*n)。下面用Java实现一个快速排序,并用注释的方式解释了思想和原理。
二、Java实现堆排序
{CSDN:CODE:869950}
三、结果检验
{CSDN:CODE:869983}...
分类:
编程语言 时间:
2015-08-08 00:01:10
阅读次数:
375