美文网首页
辅导笔记(3):快速排序

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

作者: David_IT | 来源:发表于2018-08-23 14:53 被阅读0次

#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;

}

相关文章

网友评论

      本文标题:辅导笔记(3):快速排序

      本文链接:https://www.haomeiwen.com/subject/alxmiftx.html