1 #include<iostream> 2 using namespace std; 3 void quick_sort(int *num,int l,int r){ 4 int i=l,j=r,mid=num[(l+r)/2]; 5 while(i<=j){ 6 while(num[i]<mid) i++; 7 while(num[j]>mid) j--; 8 if(i<=j){ 9 int temp=num[j]; 10 num[j]=num[i]; 11 num[i]=temp; 12 i++; 13 j--; 14 } 15 } 16 if(i<r) quick_sort(num,l,i); 17 if(j>l) quick_sort(num,j,r); 18 } 19 int main(){ 20 int n,num[100]; 21 cin>>n; 22 if(n<=0) return 0; 23 for(int i=0;i<n;i++) 24 cin>>num[i]; 25 quick_sort(num,0,n); 26 for(int i=0;i<n;i++) cout<<num[i]<<" "; 27 return 0; 28 }
最简单的快排,输入排序。原理:
1.找到一个参照元素,将数组分为比他小的左部分和比他大的右部分两个子数组(分的时候简单的左部分右部分交换)
2.开始递归,不断将子数组分为左部分和右部分,最终每部分只含有一个元素,此时数组已经有序
时间: 2024-10-12 08:09:42