快速排序算法分析

来源:互联网 发布:sshd linux 编辑:程序博客网 时间:2024/04/28 22:08

       经常在面试时会有面试官要求直接写出快速排序算法,因为该算法在排序算法中占有非常重要的地位,它排序效率高,达到O(nlogn),最坏的情况也是O(n^2),它的思想为对于一个待排序的序列,首先随机选取一个元素作为枢轴,然后通过元素值的比较,将整个序列分成两部分,前一部分所有元素都小于或等于该枢轴元素值,后一部分均大于或等于枢轴元素值。然后在分成的两个序列里再递归的执行该算法。

    源代码如下:

int partition(vector<int>& vec,int low,int high){   int i=low,j=high;      int x=vec[low];   while(i<j)   {   while(i<j && vec[j]>=x)   --j;   vec[i]=vec[j];   while(i<j && vec[i]<=x)   ++i;   vec[j]=vec[i];   }   vec[i]=x;   return j;}//快排void Qsort(vector<int>& vec,int low,int high){if(low<high){   int p=partition(vec,low,high);   Qsort(vec,low,p-1);   Qsort(vec,p+1,high);}}


  

0 0
原创粉丝点击