排序算法实现
包含交换、选择、插入、归并和分配等基础排序算法的基本原理和对应代码。
jimye
no one
展开
-
三种快速排序算法的实现(递归算法、非递归算法、三路划分快速排序)
快速排序的三个步骤:1、分解:将数组A[l...r]划分成两个(可能空)子数组A[l...p-1]和A[p+1...r],使得A[l...p-1]中的每个元素都小于等于A(p),而且,小于等于A[p+1...r]中的元素。下标p也在这个划分过程中计算。2、解决:通过递归调用快速排序,对数组A[l...p-1]和A[p+1...r]排序。3、合并:因为两个子数组时就地排序,将它们的合并并原创 2012-11-21 10:02:02 · 23358 阅读 · 5 评论 -
【排序算法】分配排序(C++实现)
与之前的那些比较排序不同,分配排序在排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序。它们的时间复杂度可达到线性阶:O(n)。常见的分配排序有计数排序(Counting Sort),基数排序(Radix Sort),桶排序(Bucket Sort),美国旗帜排序(American Flag Sort),珠排序(Bead Sort),爆炸排序(Burst Sort),鸽巢排序(Pig原创 2013-03-11 13:13:56 · 3814 阅读 · 0 评论 -
【排序算法】归并排序(C++实现)
归并排序是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。常见的归并排序有两路归并排序(Merge Sort),多相归并排序(Polyphase Merge Sort),Strand排序(Strand Sort)。下面介绍第一种:(一)两路归并排序最差时间复杂度:O(nlogn)平均时间复杂度:O(nlogn)最差空间复杂度:O(n)稳定性:稳定原创 2013-03-10 22:01:02 · 63131 阅读 · 12 评论 -
【排序算法】插入排序(C++实现)
插入排序的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。常见的插入排序有插入排序(Insertion Sort),希尔排序(Shell Sort),二叉查找树排序(Tree Sort),图书馆排序(Library Sort),Patience排序(Patience Sort)。下面介绍前两种:(一)直接插入排序最差时间复原创 2013-03-10 20:22:03 · 58428 阅读 · 8 评论 -
【排序算法】选择排序(C++实现)
选择排序算法就是每一趟从待排序的记录中选出关键字最小(最大)的记录,顺序放在已排好序的子文件的最后(最前),直到全部记录排序完毕。常见的选择排序有直接选择排序(Selection Sort),堆排序(Heap Sort),平滑排序(Smooth Sort),笛卡尔树排序(Cartesian Sort),锦标赛排序(Tournament Sort),循环排序(Cycle)。下面介绍前两种:(一)原创 2013-03-10 16:01:38 · 18862 阅读 · 3 评论 -
【排序算法】交换排序(C++实现)
所谓交换,就是根据序列中两个记录值的比较结果来对换这两个记录在序列中的位置。交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。常见的交换排序有冒泡排序(Bubble Sort),鸡尾酒排序(Cocktail Sort),奇偶排序(OddEven Sort),地精排序(Gnome Sort),快速排序(Quick Sort),臭皮匠排序(Stooge Sort),梳原创 2013-03-07 22:16:07 · 9193 阅读 · 1 评论