快速排序代码及实现(优化)
来源:互联网 发布:手机淘宝微淘 编辑:程序博客网 时间:2024/05/17 02:26
传统的快速排序是目前性能最快的排序方法,其在平均情况下的时间复杂度为O(nlogn,)但快速排序性能不稳定,在已经排好序或接近排好序的情况下时间复杂度为O(n*n),分析其原因在于其总是选取序列的第一个元素作为枢轴,而其右侧总是比枢轴大的数,所以一轮下来只能排一个数,所以采用随机数算法讲序列任意一个数与第一个数交换,再把第一个数作为枢轴进行排序。
具体代码如下(以整型数组排序为例):
public static void quickSort(int a[],int p,int r){ if(p<r){ int q = partition(a,p,r);//将数组分为左右两个子序列及一个元素 quickSort(a,p,q-1); quickSort(a,q+1,r); }}public static void partition(int a[],int p,int r){ int rand = (int)(Math.Random()*(r-p)); swap(a,p,p+rand); int x = a[p]; int j = r+1; int i = p; while(true){ while(a[++i]<x && i<r); while(a[--j>x); if(i>=j){ break; } swap(a,i,j); } swap(a,p,j); return j;}public static void swap(int a[],int i,int j){ int temp = a[i]; a[i] = a[j]; a[j] = temp;}
0 0
- 快速排序代码及实现(优化)
- 快速排序(解析及代码实现)
- 快速排序及代码实现
- 快速排序及代码实现
- 快速排序算法及python代码实现
- 快速排序及优化
- 快速排序及优化
- 快速排序及优化
- 快速排序及优化
- 快速排序及优化
- 快速排序及优化
- 快速排序及优化
- 插入排序(解析及代码实现 二分优化)
- 快速排序及优化(Java版)
- 快速排序 代码实现
- 快速排序代码实现
- 快速排序代码实现
- 快速排序代码实现
- 【深度】想成为VR开发者前先问自己六个问题
- Activity初步分析
- Spring MVC常用的注解
- Android调用系统EMAIL发送邮件崩溃,android.content.ActivityNotFoundException
- 在已经有xml文件的情况下快速生成javabean
- 快速排序代码及实现(优化)
- springMVC 常用注解
- [从头学数学] 第126节 数据的收集、整理与描述
- iOS-监听键盘输入,视图整体上移或恢复-避免输入遮挡
- dplyr高效数据处理包
- C++函数重定义、重载、重写
- iOS如何用代码控制以不同屏幕方向打开新页面?
- PostgreSQL 安装、配置、入门
- java Https post发送报文