快速排序
Posted zhoubo123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
快速排序的一般步骤:
1:在数组中选取一个基数,一般选取第一个数为基数。
2:(记数组的左端为 i 右端为 j)从右往左遍历(j--),找到第一个小于基数的数,将其放在基数的左边;
3:从左往右遍历(i++),找到第一个大于基数的数,将其放在上一步找到的小于基数的数的位置;
4:返回第二步,直到所有的数都有序;
图解:
c++代码:
#include<iostream> using namespace std; void quick_sort(int A[],int left,int right) if(left<right) int i=left; int j=right; int x=A[left]; while(i<j) while(j>i&&A[j]>x)//从右往左遍历,找到第一个比x小的数 j--; if(j>i) A[i++]=A[j];//将该数放到x的位置 while(j>i&&A[i]<x)//从左往右遍历,找到第一个比x大的数 i++; if(j>i) A[j--]=A[i];//将该数放到上一个比x小的数的位置 A[i]=x;//将x放到当前i的位置 quick_sort(A,left,i-1);//递归回去排x前面的数 quick_sort(A,i+1,right);//递归回去排x后面的数 int main() int A[]=2,4,5,1,3; quick_sort(A,0,4); for(int i=0;i<5;i++) cout<<A[i]<<" "; return 0;
以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章