关于快速排序
Posted 317zhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于快速排序相关的知识,希望对你有一定的参考价值。
快速排序 https://www.cnblogs.com/foreverking/articles/2234225.html
这位大佬讲的很清晰易懂,就是在我写代码的时候,出了点问题。
后来才发现,基准在左边的话,要先从右边开始循环(反之,亦然)。
1 #include<iostream> 2 #include<cstdio> 3 4 using namespace std; 5 6 int w[1000]; 7 void quicksort(int a[],int left,int right){ 8 //基准在左边,所以要先从右边开始执行。。唉。 9 int l=left,r=right,temp=a[left]; 10 if(left>=right) return ; 11 while(l!=r){ 12 while(l<r&&a[r]>temp) r--; 13 if(l<r) a[l]=a[r]; 14 while(l<r&&a[l]<temp) l++; 15 if(l<r) a[r]=a[l]; 16 17 } 18 a[l]=temp; 19 quicksort(a,left,l-1); 20 quicksort(a,l+1,right); 21 } 22 int main(){ 23 int n; 24 scanf("%d ",&n); 25 for(int i=0;i<n;i++) scanf("%d",&w[i]); 26 quicksort(w,0,n-1); 27 for(int i=0;i<n;i++) printf("%d ",w[i]); 28 return 0; 29 }
以上是关于关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章