![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
yanchb3
这个作者很懒,什么都没留下…
展开
-
【排序】归并排序
归并排序:两个或多个有序表合并成一个有序表。时间复杂度 O(nlogn)\ O(nlogn) O(nlogn)空间复杂度 O(n)\ O(n) O(n)//归并排序 void MergeSort (int a[], int low, int high ){ if ( low>=high ) return; else { int...原创 2019-08-16 14:01:15 · 60 阅读 · 0 评论 -
【排序】插入排序
插入排序:将待排序记录插入已排好的记录中,不断扩大有序序列。(稳定的排序算法)折半插入排序:寻找插入位置时采用折半查找的方法。时间复杂度:O(n2)O(n^2)O(n2)#include<iostream>using namespace std;void BinInsertSort ( int a[], int n ){ for ( int i=1; i<n; i+...原创 2019-08-16 14:23:38 · 55 阅读 · 0 评论 -
【排序】冒泡排序
冒泡排序:“依次比较相邻元素,‘逆序’则交换,重复n-1 次” (稳定)复杂度: O(n2)O(n^2)O(n2)#include<iostream>using namespace std;void BubbleSort ( int a[], int n ){ for ( int i=1; i<n; i++ ){ for ( int j=0; j<n-i; ...原创 2019-08-16 15:23:29 · 61 阅读 · 0 评论 -
【排序】希尔排序
希尔排序:先将待排序列分割成若干个子序列,分别进行直接插入排序,基本有序后再对整个序列进行直接插入排序。(不稳定)时间复杂度O(n3/2)O(n^{3/2})O(n3/2)#include<iostream>using namespace std;void ShellSort ( int a[], int n ){ int dk = n/2; while ( dk>...原创 2019-08-16 15:30:50 · 94 阅读 · 0 评论 -
【排序】快速排序
快速排序:一趟排序把记录分割成独立的两部分,一部分关键字均比另一部分小,然后再分别对两部分快排。分析:平均情况下,时间复杂度 O(nlogn)O(nlogn)O(nlogn)。 记录本来有序时为最坏情况,时间复杂度为 O(n2)O(n^2)O(n2)。空间复杂度(考虑递归调用的最大深度)在平均情况下为 O(logn)O(logn)O(logn),在最坏情况下为O(n)O(n)O(n)。快...原创 2019-08-16 15:41:18 · 66 阅读 · 0 评论 -
【排序】选择排序
选择排序:第 i 趟排序过程是在剩余的待排记录中选一个最小(大)的,放在第 i 个位置。时间复杂度O(n2)O(n^2)O(n2),耗费在比较记录上,比较次数始终为 n(n−1)/2n(n-1)/2n(n−1)/2,移动次数最小为 0,最大 3(n−1)3(n-1)3(n−1),即 n−1n-1n−1 次交换。注意:简单选择排序是不稳定的。反例: (101, 102, 9) → (9, 10...原创 2019-08-16 15:55:04 · 88 阅读 · 0 评论