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

2018-08-23  本文已影响0人  David_IT

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

}

上一篇 下一篇

猜你喜欢

热点阅读