常见经典排序算法
1.希尔排序
2.二分插入法
3.直接插入法
4.带哨兵的直接排序法
5.冒泡排序
6.选择排序
7.快速排序
8.堆排序
一.希尔(Shell)排序法(又称宿小增量排序,是1959年由D.L.Shell提出来的)
/*?S...
分类:
编程语言 时间:
2014-10-22 07:41:06
阅读次数:
298
第1节 开启"树"之旅第2节 二叉树第3节 堆--神奇的优先队列p194 建堆及堆排序 1 #include 2 int h[ 101];//用来存放堆的数组 3 int n;//用来存储堆中元素的个数,也就是堆的大小 4 5 6 //交换函数,用来交换堆中的两个元素的值 7 void swa...
分类:
其他好文 时间:
2014-10-21 21:17:58
阅读次数:
139
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据非常大,一次不能容纳所有的排序记录,在排序过程中须要訪问外存。我们这里说说八大排序就是内部排序。 当n较大,则应採用时间复杂度为O(nlog2n)的排序方法:高速排序、堆排序或归并排序序。 高速排序:是眼下基于...
分类:
编程语言 时间:
2014-10-21 13:41:52
阅读次数:
255
1. 冒泡排序每次比较数组中的两个数,如果和你期望的顺序不一致,就交换这两个数,一次循环下来能将一个数摆在正确的位置上。外层循环共需要N-1次,因为N-1个数都已经摆在正确的位置上,那第N个数也已经是正确的了。内层循环也可以是N-1次,也可以每次都比上一次少循环一次,第一种情况会比较已经排好序的部分...
分类:
编程语言 时间:
2014-10-20 23:07:11
阅读次数:
272
堆数据结构实际上是一种数组对象,是以数组的形式存储的,可是它能够被视为一颗全然二叉树,因此又叫二叉堆。堆分为下面两种类型:大顶堆:父结点的值不小于其子结点的值,堆顶元素最大小顶堆:父结点的值不大于其子结点的值,堆顶元素最小堆排序的时间复杂度跟合并排序一样,都是O(nlgn),可是合并排序不是原地排序...
分类:
编程语言 时间:
2014-10-20 21:14:02
阅读次数:
239
常见经典排序算法
1.希尔排序
2.二分插入法
3.直接插入法
4.带哨兵的直接排序法
5.冒泡排序
6.选择排序
7.快速排序
8.堆排序
一.希尔(Shell)排序法(又称宿小增量排序,是1959年由D.L.Shell提出来的)
/* Shell 排序法 */
#include
void sort(int v[]...
分类:
编程语言 时间:
2014-10-18 15:34:08
阅读次数:
226
DP: dp[i][j]前i堆排出j长度的序列有多少种排法,
dp[i][j]=dp[i-1][j] (不用第i堆),
dp[i][j]+=dp[i-1][j-k]*C[j][k] (用第i堆的k个石头)
A Famous Stone Collector
Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 3...
分类:
其他好文 时间:
2014-10-18 12:40:59
阅读次数:
299
1 void HeapAdjust(int a[],int s,int m) 2 { 3 int temp = a[s]; 4 5 for(int j=2*s;j=a[j]) //如果只写大于而不写等于会出现问题,10 break;11 ...
分类:
编程语言 时间:
2014-10-17 15:01:03
阅读次数:
179
下面列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 快速排序 堆排序 归并排序 基数排序 希尔排序,然后是测试的例子...
分类:
编程语言 时间:
2014-10-15 14:44:30
阅读次数:
235
作用:heapq模块实现一个适用于Python列表的最小堆排序算法 堆(heap)是一个属性数据结构,其中子节点与父节点是一种有序关系。二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。可以使用以下如下方式组织的列表或数表示,即元素N的子元素位于2*N+1和2*N+....
分类:
其他好文 时间:
2014-10-15 01:29:19
阅读次数:
364