快速排序QuickSort——C/C++


void QuickSort(int a[],int low,int high); //对a[low]到a[high]由小到大排序
void QuickSort(int a[],int low,int high) { int pivot; int i=low,j=high; if(low<high){ pivot = a[low];    //将第一个元素作为枢轴 //接下来进行第一次partition
        while(i<j){ while(i<j && a[j]>=pivot)    //从右往左找到第一个小于枢轴的数
                j--; if(i<j){    //将该数移动到左指针的位置
                a[i] = a[j]; i++; } while(i<j && a[i]<pivot)    //从左往右找到第一个大于等于枢轴的数
                i++; if(i<j){    //将该数移动到右指针的位置
                a[j] = a[i]; j--; } } a[i] = pivot;    //循环退出时i == j即枢轴的位置 //递归处理当前枢轴的左右两部分
        QuickSort(a,low,i-1); QuickSort(a,i+1,high); } } /* 算法分析: time-complexity: 最好情况下时间复杂度为O(nlog2n),待排序列接近无序,算法效率越高。 最坏情况下时间复杂度为O(n2),待排序列月接近有序,算法效率越低。 平均情况下时间复杂度为O(nlog2n); space-complexity O(log2n) *

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM