您的位置:首页 > 产品设计 > UI/UE

快速排序(quick_sort)

2018-03-12 22:38 381 查看
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

分析:



第一个为关键字,依次与其比较,i为其位置,j为下一个比较数,如果大于关键字,j继续后移,没有其他操作;如果小于关键字,j处的数与i处进行交换,i、j均要后移。最后,将关键字与i处互换即可。

代码实现:

#include <bits/stdc++.h>

using namespace std;

int mid(int *a,int l,int r){
int i=l+1;
int temp=a[l];//取第一个为关键字
for(int j=l+1;j<=r;j++){
if(a[j]<temp){
swap(a[i++],a[j]);//小于关键字的交换
}
}
swap(a[l],a[i-1]);//交换关键字
return i-1;
}

void quick_sort(int *a,int l,int r){
if(l>=r) return;

int p = mid(a,l,r);//进行关键字比较,返回关键字位置
quick_sort(a,l,p-1);//关键字左边递归
quick_sort(a,p+1,r);//关键字右边递归
}

int main(){
int n;
cin>>n;
int arr
;
for(int i=0;i<n;i++){
cin>>arr[i];
}
quick_sort(arr,0,n-1);
for(int i=0;i<n;i++)
cout<<arr[i]<<" ";
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: