数据结构----简单易懂的快排

#include<bits/stdc++.h>
using namespace std;
int a[101],n;
int kp(int a[],int s,int e)//排每一个数
{
 int key=a[s];
 while(s<e)
 {
  while(s<e&&a[e]>=key)
   e--;//由于定义的key为a【s】,所以要先从右边开始
  a[s]=a[e];//找到在关键字key右边小于关键字的数,把它赋值给左边(a[s]已经保存到key中)
  while(s<e&&a[s]<=key)//同里
   s++;
   a[e]=a[s];
 
 }
 a[s]=key;
 return s; 
}
void Qsort(int a[],int s,int e)
{
 if(s<e)
 {
  int mid=kp(a,s,e);//mid为排完的那个数的最终位置
  Qsort(a,s,mid-1);
  Qsort(a,mid+1,e);
 }
}
int main()
{
 int n;
 cout<<"输入排序的个数:";
 cin>>n;
 for(int i=1;i<=n;i++)
  cin>>a[i];
 Qsort(a,1,n);
for(int i=1;i<=n;i++) 
 cout<<a[i];
 return 0;
 } 
发布了44 篇原创文章 · 获赞 4 · 访问量 1066

猜你喜欢

转载自blog.csdn.net/qq_44162236/article/details/103304078