1 #include 2 #include 3 4 using namespace std; 5 6 #define ARRAY_SIZE 10 7 8 int g_bubble_sort[ARRAY_SIZE] = {3, 1, 5, 9, 12, 7, 8, 13, ...
分类:
编程语言 时间:
2016-01-18 17:34:24
阅读次数:
201
从书本上看的,这里记录下。1.时间复杂度(平均时间复杂度)插入排序:O(N2);希尔排序:O(N2) Hibbard增量的希尔排序平均:O(N7/6) 堆排序:O(NlogN) (每次需要构建堆,比较次数较多;为了减少开销,每次删除的数据放到头(从小到大排)或尾(从大到小排)归并排序:O(Nl...
分类:
编程语言 时间:
2016-01-11 23:58:54
阅读次数:
361
什么是堆?http://www.cnblogs.com/mengdd/archive/2012/11/30/2796845.html n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。 情形1:ki = k2i 且ki >= k2i+1 (最大化堆或大顶堆) 若将和此...
分类:
编程语言 时间:
2016-01-11 00:13:13
阅读次数:
273
希尔排序(不稳定)算法思想:(以从小到大为例)希尔排序使用了一个h1,h2,h3,……,ht的增量序列.用增量Hk对数据元素的一趟排序下来,所有相隔Hk的元素都已经被排好序,即:对于任意位置i,A[i]<=A[i+hk]恒成立。待使用增量为1的那一趟排序之后,所有的元素都保持有序状态。核心..
分类:
编程语言 时间:
2016-01-10 17:16:19
阅读次数:
195
算法分析与设计复习2016年初,研一上学期期末考试前,复习并总结算法分析与设计科目的内容。复习过程参照《算法导论》中文第2版,同时参照PPT,章节划分根据PPT内容概要:第一章 概述第二章 插入排序&分治策略第三章 复杂度分析第四章 堆与堆排序第五章 快速排序第六章 线性时间排序第一章 概述算法的应...
分类:
编程语言 时间:
2016-01-09 23:05:22
阅读次数:
647
堆排序(Heap Sort)具体步骤为将无序序列建成大顶堆(小顶堆):从最后一个非叶子节点开始通过堆调整HeapAdjust()变成小顶堆或大顶堆将顶部元素与堆尾数组交换,此是末尾元素就是最大值,顶部元素不满足堆,故要将顶部元素在剩余的i-1个元素中调整为堆反复第2步。直至所有顶点被输出,序列变成从...
分类:
编程语言 时间:
2016-01-03 22:35:24
阅读次数:
297
数据结构课程可能会考到的排序算法:插入排序 希尔排序 冒泡法 快排 选择排序 堆排序 归并排序一 插入排序#include#include#include#includeusing namespace std;void print(int a[], int n ,int i){ cout<<i...
分类:
编程语言 时间:
2016-01-03 21:03:22
阅读次数:
250
比较型算法分为五类: 1、插入排序:直接插入排序、折半插入排序、希尔排序; 2、选择排序:直接选择排序、堆排序; 3、交换排序:快速排序、冒泡排序; 4、归并排序; 5、基数排序;比较分析: 1、插入排序的主旨是插入;将无序序列中的元素依次插入到有序序列中,知道无需序列为空为止; 2、...
分类:
编程语言 时间:
2016-01-02 16:09:38
阅读次数:
178
各种排序算法比较各种常用排序算法类别排序方法时间复杂度空间复杂度稳定性复杂性特点最好平均最坏辅助存储简单插入排序直接插入O(N)O(N2)O(N2)O(1)稳定简单希尔排序O(N)O(N1.3)O(N2)O(1)不稳定复杂选择排序直接选择O(N)O(N2)O(N2)O(1)不稳定堆排序O(N*log...
分类:
编程语言 时间:
2015-12-31 12:34:22
阅读次数:
152
时间复杂度为O(n^2)的排序算法:冒泡排序,选择排序,插入排序数组a[N]中进行冒泡排序冒泡排序: 假如数组为[3,7,4,6,8,9,1]-->[3,7,4,6,8,9,1]-->[3,4,7,6,8,9,1]....一直进行下去,相邻2个数进行比较。 1.第一轮:数组相邻2个元素相比较(a.....
分类:
编程语言 时间:
2015-12-28 20:17:15
阅读次数:
213