排序,是编程的一个重要算法。
接下来我们讲一讲快排。
快速排序是一种划分交换排序。他从采用了一种叫分治的策略,n大时好,快速排序比较占用内存。
平均算法复杂度 | 稳定性 | 算符复杂性 |
O(N*log2N) | 不稳定 | 复杂 |
快排(函数)
#include <bits/stdc++.h>
using namespace std;
long long n;//数组元素数量
int a[100100];
int main () {
cin>>n;
for (int i = 1;i <= n;i++)
cin>>a[i];
sort(a+1,a+1+n);//从a[1]排序至a[n]
for (int i = 1;i <= n;i++)
cout<<a[i]<<" ";
return 0;
}
/*从大到小排序代码
#include <bits/stdc++.h>
using namespace std;
bool cmp(int a,int b) {
return a>b;
}
long long n;//数组元素数量
int a[100100];
int main () {
cin>>n;
for (int i = 1;i <= n;i++)
cin>>a[i];
sort(a+1,a+1+n,cmp);//从a[1]排序至a[n]
for (int i = 1;i <= n;i++)
cout<<a[i]<<" ";
return 0;
}
*/
此算法思想为:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个大的数放他右边,小于等于放左边。
3.在对左右区间重复第二步,直到各区间只有一个数
sort函数默认从小到大。