快速排序
来源:互联网 发布:房地产动画制作软件 编辑:程序博客网 时间:2024/06/03 17:04
比较排序的一种,其实快速排序是基于 “二分” 的思想。快速排序之所比较快,每次交换是跳跃式的。每次排序的时候设置一个基准点,将小于等于基准点
的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。
快速排序:
时间复杂度 O(nlogn)
空间复杂度O(logn)
不稳定 【两个时间复杂度O(nlogn)
的排序算法都不稳定】
由于关键字的比较和交换是跳跃进行的,因此,快速排序是一种不稳定的排序方法。
最坏
O(n^2)
,最好O(n)
空间复杂度:递归造成的栈空间的使用,最好情况,递归树的深度logn
空间复杂的logn
,最坏情况,需要进行n‐1
递归调用,其空间复杂度为 O(n)
,
平均情况,空间复杂度也为O(log2n)
。
int partition(int A[], int begin, int end){ int i = begin; int j = end; int q; int pivot = begin; int pivotnumber = A[pivot]; while(i!=j){ int temp; while(A[j]>pivotnumber && i<j){ j--; } while(A[i]<=pivotnumber && i<j) { i++; } temp = A[i]; A[i] = A[j]; A[j] = temp; } if(i == j){ int temp; temp =A[pivot]; A[pivot] = A[i]; A[i] = temp; } return i; } void sort(int A[], int begin,int end){ if(begin<end){ int q; q = partition(A,begin, end); sort(A,begin, q-1); sort(A,q+1,end); } }int main() { int array[] = {8,7,1,6,5,4,3,2}; sort(array, 0, 7); for(int i=0;i<array.length;i++){ cout<< array[i]<<" "; } }
阅读全文
1 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 12.函数
- Java基础学习笔记 第二部分 part 3
- Oracle Minus关键字
- 0021_Merge Two Sorted Lists
- Java多线程技术研究(四)-Callable,Future/FutureTask,及Future设计模式
- 快速排序
- python 文本情感分类
- tensorflow1.0安装
- Linux下redis的安装及部署
- Java内存管理机制
- Loadrunner模拟JSON接口请求进行测试
- 计算机 女毕业 四年开始抓 起JAVA,加油,工科女,你是好样的!
- 手机身份证识别OCR识别
- Android 关于QQ分享,微信分享网页