#include<iostream>
#include<cstdio>
using namespace std;
void quick_sort(int a[],int low,int high)
{
int i=low;
int j=high;
if(low<high)
{
int tp=a[low];//枢轴是第一个元素
while(i!=j)
{
//先从high向low搜
//找到第一个比枢轴大的数
while(a[j]>=tp&&j>i) j--;//向左移动
//如果找到了
if(i<j)
{
a[i]=a[j];
i++;
}
//现在从左向右搜索
//找到第一个比枢轴小的数
while(i<j&&a[i]<tp) i++;
if(i<j)
{
a[j]=a[i];
--j;
}
//最后i==j的地方
//cout<<i<<endl;
a[i]=tp;//枢轴放中间
//以i位置划分之后,递归排序即可
quick_sort(a,low,i-1);
quick_sort(a,i+1,high);
}
}
}
int main()
{
int a[8]={70,50,30,20,10,70,40,60};
int n=8;
cout<<"原先未排序前的序列结果:";
for(int i=0;i<n;i++) cout<<a[i]<<" ";
cout<<endl;
quick_sort(a,0,n-1);
cout<<"最终快速排序的结果:";
for(int i=0;i<n;i++) cout<<a[i]<<" ";
cout<<endl;
}
快速排序算法实现
于 2024-08-09 16:44:47 首次发布