辅导笔记(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;

}

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

推荐阅读更多精彩内容

  • 1.实现快速排序算法 问题描述给定一个无序数组int[ ] a,使用快速排序算法进行排序。 解题思路对于快速排序,...
    孙树冲阅读 1,358评论 0 1
  • 各校历年复试机试试题 清华、北大、华科试题详细笔记部分,少笔记部分与少数leetcode【含个人整理笔记】 一、详...
    十里江城阅读 1,218评论 0 1
  • 一、partition quicksort 分治+递归 快速排序一次划分算法伪代码: 将i和j分别指向待排序列最左...
    敲可爱的小超银阅读 503评论 0 0
  • 有时候会忘了自己喜欢什么 就好像不喜欢全世界一样 但也不讨厌 会觉得很迷茫 默默地为边走边遗失着的那些自认为觉得重...
    DaluDalu阅读 236评论 0 1
  • 星巴克要全面禁用塑料吸管 这是怎么回事?对于喜欢去星巴克喝东西的朋友来说,由于受到政策的管控,其要做出一些调整了,...
    永不言弃512阅读 378评论 0 0