辅导笔记(3):快速排序

#include<iostream>

using namespace std;

int a[101],n;

void quicksort(int left,int right){

int i=left,j=right;

int k=a[left];//变量k临时存放最左边的元素,单独保存

while(i<j){

  //先从最右边开始

  while(a[j]>=k&&i<j) //如果右边比k大,向左走 i<j控制走到头的情况

      j--;

  a[i]=a[j];//替换

  while(a[i]<=k&&i<j) //如果左边比k小,向右走;

      i++;

  a[j]=a[i];

}

  a[i]=k;  //把k还原到i的位置,a[i]元素

  if(left<i) quicksort(left,i-1);

  if(i<right) quicksort(i+1,right); 

}

int main(){

cin>>n;

for(int i=1;i<=n;i++)  cin>>a[i];

quicksort(1,n);

for(int i=1;i<=n;i++)  cout<<a[i]<<" ";

return 0;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容