排序
文章平均质量分 83
wzb56
never say die! never ever give up!
人活着,你也让别人活!
前半生不犹豫,后半生不后悔!
改变一生的无外乎两种东西:一是你读过的书,一是你遇到的人。
改变命运的无外乎两种东西:一是你读过的书,一是你遇到的人。
展开
-
快速排序(quickSort)四种经典实现
一、.算法分析快速排序使用分治(Divide and conquer)策略,从序列中选取pivot ,把这个序列(list)通过这个pivot分为两个子序列(sub-lists),一个子序列中所有的元素都不大于pivot,另一个子序列中的所有元素都不小于pivot,从而确定了pivot在整个序列的位置,对每个子序列执行同样的操作,直至序列中的每个元素的最终位置都确定。步骤为:从数列中挑原创 2012-03-13 16:06:03 · 3127 阅读 · 0 评论 -
归并排序(mergeSort) 与 分而治之策略(divide and conquer)
1. 分治: (divide and conquer) 一个大的问题,可以分解为相似的子问题,每个相似的子问题都和原问题有一样的求解方法。可以将问题细化,直到子问题足够小能够求解,然后将子问题的解逐级合并,以最终求得原问题的解。2. 归并排序算法的递归实现。#include #include #define max 100int tmp[max];原创 2012-03-09 22:23:07 · 2024 阅读 · 0 评论 -
插入排序InsertSort的三种实现方式及循环不变式的使用
一、循环不变式的概念:在循环结构设计中,核心设计就是找到循环结构中循环不变式(loop invariant);方法是找中间的一个普通循环迭代,同时保证满足边界条件(edge case)。循环不变式满足的三个条件:1. 初始化: 在初始化状态下,循环不变式保持某种性质。2.保持性: 循环不变式的性质,在迭代的同时能够保持。3.终止性: 循环不变式终止时,能够保证某种原创 2012-03-08 21:48:42 · 1202 阅读 · 1 评论 -
堆(heap)、堆排序(heapSort)、优先级队列
1. 堆数据结构: 堆是一种数据结构。分为大根堆和小根堆。 对堆数组,其分布与一个完全二叉树对应,其下标的几个关系: 当i的取值满足区间[1, n]时; 数组的小标从1开始; parent(i) = i >> 1; left(i) = 2*i; right(i) = 2*i +1;原创 2012-03-09 23:40:01 · 1010 阅读 · 0 评论 -
冒泡排序:bubleSort
冒泡排序:就像水里的气泡,密度小往上浮。 对于数组而言,当然是值小的向数组下标小的方向传播,值大的向数组下标大的方向传播,传播是通过数组元素之间的交换实现的。 最终生成有序数组的过程。改进的冒泡排序:当数组中的元素不在发生交换时,说明排序完成。(因为数组元素总是相邻元素比较,并且发生逆序时,交换,从而使偏序关系得以传递)。原创 2012-09-24 19:48:38 · 1200 阅读 · 0 评论 -
选择排序:selectSort
选择排序:选择排序其实是以一种缩减问题规模的方法,将数组排序的算法 1. 对于数组a[0...n-1] 中的元素,通过比较,选出数组中最小元素的下标k, 将a[k] 和a[0] 交换,确定a[0],; 2. 同理,剩余的n-1一个元素a[1...n-1],仍然可以通过1的方法,确定a[1]. 3.原创 2012-09-24 19:59:07 · 762 阅读 · 0 评论 -
常见排序算法总结
排序(sorting)排序(Sorting)第一类:内部与外部排序第二类:稳定与不稳定排序法第三类:简单与高等排序法常见之排序算法冒泡排序(Bubble sorting)选择排序(Selection sorting)插入排序(Insertion sorting)快速排序(Quick sorting)堆排序(Heap sorting)希尔排转载 2012-10-15 23:23:50 · 887 阅读 · 0 评论