
排序
文章平均质量分 71
Rufeng-Blog
这个作者很懒,什么都没留下…
展开
-
冒泡排序
冒泡排序 冒泡排序是一个最基本,最简单的交换排序算法,也是学C语言第一次接触的排序算法。 冒泡排序的基本思想是:依次比较相邻的两个数,将小数放在前面,大数放在后面。由于过程像一个冒泡的过程,所以有了这个形象的名字。 冒泡排序在一个二重循环中进行,所以时间复杂度为O(n^2) 冒泡排序的C++语言实现: /**************************** *原创 2013-03-12 19:47:18 · 863 阅读 · 0 评论 -
鸡尾酒排序
鸡尾酒排序(双端冒泡排序) 鸡尾酒排序也叫定向冒泡排序,搅拌排序等,是冒泡排序的一种变形。鸡尾酒排序是在两端开始排序的,而冒泡排序时在一端进行的。 鸡尾酒排序的C++实现: /**************************** *Name:鸡尾酒排序.cpp(双端冒泡排序) *Tags:排序 *Note: ***********************原创 2013-03-12 19:50:15 · 900 阅读 · 0 评论 -
直接插入排序
直接插入排序 直接插入排序是每次把无序序列中的第一个元素,然后插入到有序序列的合适位置,即排序过程中会出现两部分,一部分是已排序的有序序列,还有一部分是待排序的无序序列。 排序过程通过一个二重循环实现。外层循环确定下一个待排序的值,即无序序列的第一个元素,内层循环实现对待排序元素插入位置的查找。 直接插入排序C++实现: /**********************原创 2013-03-13 18:56:02 · 768 阅读 · 0 评论 -
希尔排序
希尔排序 希尔排序又叫缩小增量排序,也是一直插入排序算法,是直接插入排序的一种改进。 算法思路:先取一个小于n的整数dk作为第一个增量,将array分成dk组,将所有相距dk的倍数的元素分到同一个组中,先在各自组内进行直接插入排序,然后逐步减小增量dk的大小,直到dk的值为1,这时就是一个对所有元素的直接插入排序,排序结束。 希尔排序的C++实现: /***********原创 2013-03-14 19:53:51 · 811 阅读 · 0 评论 -
快速排序及其变种算法
快速排序 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 1) 递归实现的快速排序算法 用分治法处理待排序数原创 2013-03-17 21:45:54 · 2051 阅读 · 0 评论 -
堆排序
堆排序 堆排序是通过数据结构中的树的结构进行排序的过程。 堆:n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):ki >=号。//k(i)相当于二叉树的非叶结点,K(2i)则是左孩子,k(2i+1)是右孩子 堆排序: 堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的原创 2013-03-17 21:48:39 · 847 阅读 · 0 评论 -
归并排序
归并排序 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。原创 2013-03-18 16:05:03 · 869 阅读 · 0 评论 -
基数排序
基数排序 算法思路:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。 基数排序的方式可以采用LSD(Leastsignificant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开始,而MSD则相反,原创 2013-03-19 20:10:31 · 762 阅读 · 0 评论