排序算法
勤奋的Garfield
这个作者很懒,什么都没留下…
展开
-
冒泡排序 BubbleSort
假设数据 由小到大 排列 所谓“冒泡”指的就是每层循环保证最小的泡泡上浮到水面 考虑数列[3 2 5 1 6] 第一次循环 ① 3 2 5 1 6 --> 3 2 5 1 6 ② 3 2 5 1 6 --> 3 2 1 5 6 ③ 3 2 1 5 6 --> 3 1 2 5 6 ④ 3 1 2 5 6 --> 1 3 2 5 6 第一次循环完毕之后保证了最小的泡泡(元素)上浮到水面原创 2015-06-09 21:46:52 · 522 阅读 · 0 评论 -
插入排序 InsertSort
插入排序的策略是:第i-th 循环,选定A[i],把它插入到A[1]~A[i-1]中去。 注意,这里的A[1]~A[i-1]是按从小到大顺序排好的了。 i 从2 开始,注意A[]的下标是从1~n,共有n个元素。 template void InsertSort( Type A [ ], int n ) { for( int i = 2 ; i <= n ; i++ ) {原创 2015-06-10 19:22:20 · 561 阅读 · 0 评论 -
堆排序 HeapSort
堆 分为 大根堆 和 小根堆,均是完全二叉树 大根堆 要求每个内部节点的值大于其左右子节点的值 性质:由最大堆的要求来看,大根堆总能保证根节点是堆中值最大的。 堆排序算法就是根据大根堆的这种性质, 0)初始化二叉树(堆) 1)调整堆使其为全部元素( n个 )的大根堆 2)拿出根节点(n个中最大值),调整剩余的(n-1)个元素使其为大根堆 3)拿出根节点(n-1个中最大值),调整剩余(原创 2015-06-11 14:40:07 · 427 阅读 · 0 评论