排序
文章平均质量分 74
xutian_curry
这个作者很懒,什么都没留下…
展开
-
简单排序算法
选择排序:选择排序思想是每次找到未排元素中的最小元素放到已排好元素的末尾template<typename T> void selectSort( T arr[],int n ) { for( int i = 0; i < n; i ++) { int minIdex = i; for( int j = minIdex; j <...原创 2018-04-24 17:33:51 · 124 阅读 · 0 评论 -
复杂排序之归并排序
归并排序的时间复杂度是O(nlogn),与快速排序和堆排序最大的不同是归并排序是稳定的,但它需要额外的O(n)的空间复杂度利用递归的方法进行排序void Merge( ElementType A[], ElementType TmpA[], int Left, int Mid, int Right ) { /* 将有序的A[Left]~A[Mid-1]和A[Mid]~A[Right]归并成一个有序...原创 2018-04-24 21:49:02 · 104 阅读 · 0 评论 -
快速排序
步骤为:1. 选主元(取头中尾的中位数)2. 子集划分3.递归左半边4.递归右半边注意的地方是当数组元素个数较少时,快速排序时间性能不高,故设定阈值,当元素数目高于阈值时,使用快速排序,低于阈值时使用插入排序。快速排序的平均时间复杂度为O( n log n ) , 最坏情况时间复杂度为 O( n^2 ) 递归需要O( logn )的空间复杂度,排序算法是不稳定的typedef int Elemen...原创 2018-04-25 20:42:56 · 115 阅读 · 0 评论