快速排序_算法基本思想及实现

来源:互联网 发布:java h5微信支付视频 编辑:程序博客网 时间:2024/04/23 18:21

基本思想:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。时间复杂度nlogn,每次通过递归调用将序列一分为二,若n=8,log(8)=3次,每次都是从两边向中间靠拢,平均需要n*logn.

#include<iostream>using namespace std;int num[30];void qsort(int left,int right){    if(left>=right)    return ;    int key=num[left];//基准     int low=left;    int high=right;    while(low<high)    {        while(low<high&&num[high]>key)//从后寻找小于基准的第一个数         {            high--;        }        num[low]=num[high];//更新         while(low<high&&num[low]<key)//从前寻找大于基准的第一个数         {            low++;        }        num[high]=num[low];//更新     }    num[low]=key;    qsort(left,low-1);//递归调用     qsort(low+1,right);}int main(){    int n;    cin>>n;    for(int i=0;i<n;i++)    {        cin>>num[i];    }    qsort(0,n-1);    for(int i=0;i<n;i++)    {        cout<<num[i]<<" ";    }    return 0;}
原创粉丝点击