机房解疑 | 快速排序
Posted 机房日子编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机房解疑 | 快速排序相关的知识,希望对你有一定的参考价值。
当当当~
又到了解疑的时候啦~
今天给小伙伴们讲一下
快速排序
首先我们来看一下题目
有 n 组数据,输入这些数据,然后将他们从小到大排列并输出
输入要求
第一行输入一个正整数 n(3<=n<=10000),第二行输入 n 个数
输出要求
从小到大输出
输入样例
5
52 68 94 75 46
输出样例
46 52 68 75 94
解题思路
排序的方法有很多,有冒泡排序,插入排序,选择排序,桶排序,快速排序,桶排序,归并排序等,每一种排序都有每一种排序的特点。
随时数据量的增加,很多排序都会出现超时的现象(时间复杂度),那快速排序正如他的名称一样,运算是比较快的。在处理大量数据时,快速排序的程序运算时间比较少,但是在极端数据的情况下,比如原始数据是从大到小的,那快速排序也会处理相对比较久一些,所以快速排序的稳定性不是很好。
核心思路:二分和递归
下面是快速排序参考代码~
#include<bits/stdc++.h>
using namespace std;
int a[10005];
void qsort(int l,int r){
int i,j,mid;
i=l;j=r;
mid=a[(l+r)/2];
while(i<=j)
{
while(a[i]<mid) i++;
while(a[j]>mid) j--;
if(i<=j)
{
swap(a[i],a[j]);
i++;
j--;
}
}
if(l<j) qsort(l,j);
if(i<r) qsort(i,r);
}
int main(){
int n,i;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
qsort(1,n);
for(i=1;i<=n;i++)
cout<<a[i]<<" ";
}
微信二维码—刘老师
手机号:13817160526
以上是关于机房解疑 | 快速排序的主要内容,如果未能解决你的问题,请参考以下文章