排序
breeze_blows
这个作者很懒,什么都没留下…
展开
-
折半插入排序
介绍折半插入排序原创 2017-06-28 21:55:59 · 532 阅读 · 0 评论 -
快速排序介绍与分析
快速排序在我看来是一个对一个随机产生的序列比较高效的排序算法。和冒泡排序一样属于交换排序即排序时需要不断交换元素。 基本思想: 1.先选一个基准数字,假定这里每次选定最左边的数字作为基准数字,然后从数列最后一个元素开始与该基准数字比较(注意这里的顺序非常重要,必须从右边即序列最后一个元素开始比较,而不能从该序列第二个数字即基准数字相邻的数字开始与该基准数字做比较),一直找到那个比该基准数字小的原创 2017-06-29 08:15:28 · 457 阅读 · 0 评论 -
希尔排序的介绍与分析
对希尔排序的介绍与分析原创 2017-06-28 21:38:05 · 319 阅读 · 0 评论 -
冒泡排序介绍与分析
冒泡排序应该就是我们最开始学习并且最简单的排序了,主要思想就是(假定这里从小到大排序)从数列的第一个元素开始一次与后面的元素比较(当然也可以选择从最后一个元素与往前面比较),如果比后者大侧交换,达到最大数冒泡到最后一个元素的位置;如果是比后者小侧接着比较。 这里可以用一个标志exchange优化一下冒泡排序,如果在一趟比价中就没有发生前后元素交换就证明已经有序,无需在进行后序的冒泡操原创 2017-06-28 22:34:49 · 682 阅读 · 0 评论 -
选择排序----直接选择排序与堆排序
选择排序即每次从待排序的数列中选择一个最小的元素,然后把它放在已排好序列的最前面(假定这里从小到大排序),直至序列完全有序。 选择排序分为线性结构的直接选择排序与非线性的堆排序,后者是用相当于把树的元素存在数组中,通过元素下标来区分孩子结点与父亲结点等等 1.直接选择排序 直接上代码 void select_sort(int* a, int n) { for (int原创 2017-07-01 22:14:23 · 396 阅读 · 0 评论 -
归并排序介绍与分析
归并排序:把R[0,n-1]看成n个长度为一的有序序列,然后两两归并,得到n/2(上取整)个长度为二的有序表(最后一个有序序列长度可能为一),然后在两两归并,得到n/4个长度为4的有序表(最后一个有序表长度可能小于4).........知道得到长度为n的有序表 首先是把两个有序的表合并为一个有序的序列 void merge(int* a, int low, int mid, i原创 2017-07-03 22:05:44 · 345 阅读 · 0 评论 -
各类排序比较
在写完了各个排序的具体介绍后,现在对各种排序的具体时间做一下比较,形象的看看各个排序的性能(如果对里面具体哪个排序算法不太了解,可以参看博主有关文章) #include #include #include #include #include using namespace std; //直接插入排序 void insert_sort(int* a, int n) { for (i原创 2017-07-03 22:43:49 · 294 阅读 · 0 评论 -
直接插入排序
直接插入排序介绍与分析原创 2017-06-28 20:48:51 · 307 阅读 · 0 评论