快速排序

来源:互联网 发布:古建筑设计软件 编辑:程序博客网 时间:2024/06/06 12:05

快速排序:

1.先从数列中选取一个数作为基准值;

2.分区:将比这个数大的数全放在它的右边,小于或等于的数全放在左边;

3.再对左右区间重复第二步骤,直到各区间只有一个数为止;(即递归)

这里不一一画图了,直接上程序

#include<iostream>using namespace std;void qsort(int a[],int l,int r){if(l<r)   {    int i=l,j=r;    int pivot=a[i];//基准值    while(i<j)   {       while(i<j&&(a[j]>=pivot))//先从右往左找比基准值小的数   j--;   if(i<j)   a[i++]=a[j];//赋值给a[i],同时i++;   while(i<j&&(a[i]<=pivot))//之后从左往右查找比pivot大的值,赋值给a[j],同时j--;   i++;   if(i<j)   a[j--]=a[i];   }   a[i]=pivot;   qsort(a,l,i-1);   qsort(a,i+1,r);}}int main(){int a[100];int n;cout<<"please input the number n:"<<endl;cin>>n;for(int i=0;i<n;i++)cin>>a[i];qsort(a,0,n-1);    for(int i=0;i<n;i++)cout<<a[i]<<" ";cout<<endl;}


0 0
原创粉丝点击