快速排序java代码
2024-09-05 12:51:07
法一:
//快速排序 通过测试
public class QuickSortTest2 {
public static void quickSort(int[] data,int low,int high){ //此处O(logn)
int index;
if(low<high) {
index=partition(data,low,high);
quickSort(data,low,index-1);
quickSort(data,index+1,high);
}
} public static int partition(int[] data, int i, int j) { // O(n)
int k=data[i];
while(i<j){
while(i<j&&data[j]>=k)
j--;
if(i<j)
data[i++]=data[j];
while(i<j&&data[i]<=k)
i++;
if(i<j)
data[j--]=data[i];
}
data[i]=k;
return i;
}
//-----------------------------------------------------------------------------
public static void main (String args[]){
int x[]={9,8,7,6,5,4,3,2,1};
quickSort(x,0,x.length-1);
for(int i=0;i<x.length;i++){
System.out.println(x[i]);
}
}
}
法二:
//快速排序 通过测试
public class QuickSortTest_ali {
void quickSort(int[] data,int length){
if(length<=1) return;
int start=0;
int end=length-1;
int pivot=data[0];
while(start<end){
for(;start<end;end--){
if(data[end]<pivot){
data[start++]=data[end];
break;
}
}
for(;start<end;start++){
if(data[start]>pivot){
data[end--]=data[start];
break;
}
}
}
data[start]=pivot;
quickSort(data,start);
quickSort(data+start+1,length-start-1);
}
//-----------------------------------------------------------------------------
public static void main (String args[]){
int x[]={9,8,7,6,5,4,3,2,1};
quickSort(data,0,data.length-1);
for(int i=0;i<x.length;i++){
System.out.println(x[i]);
}
}
}
时间复杂度:最好的情况和平均情况都是nlogn,最坏情况是n^2。
最新文章
- Delphi容器类之---Tlist,TStringlist,THashedStringlist的效率比较
- 【现代程序设计】homework-03
- ‘Cordova/CDVViewController.h’ file not found Xcode 7.1
- ios开发--清理缓存
- 详解Windows平台搭建Androiod开发环境
- IntelliJ IDEA 配置Jetty
- Gprinter Android SDK V1.0 使用说明
- SQL Server 死锁检查
- 【原创】leetCodeOj --- Find Minimum in Rotated Sorted Array II 解题报告
- UVa 10491 - Cows and Cars
- 基于HTML5 Canvas 实现弹出框
- Node.js 字符串解码器
- Error: Invoke-customs are only supported starting with Android O (--min-api 26)
- css_属性
- 知识点---animate()动画滞后执行的解决方案
- 转载 Spring、Spring MVC、MyBatis整合文件配置详解
- 最小生成树模板题POJ - 1287-prim+kruskal
- js高级-作用域链
- Java并发编程的艺术(一)——并发编程需要注意的问题
- iOS开发 - Core Animation 核心动画