最好理解的快速排序 :实例解析输入数组,排序

来源:互联网 发布:c语言中long怎么用 编辑:程序博客网 时间:2024/05/08 15:47
 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.开始递归,不断将子数组分为左部分和右部分,最终每部分只含有一个元素,此时数组已经有序

0 0
原创粉丝点击