法一:

//快速排序 通过测试
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。

最新文章

  1. Delphi容器类之---Tlist,TStringlist,THashedStringlist的效率比较
  2. 【现代程序设计】homework-03
  3. ‘Cordova/CDVViewController.h’ file not found Xcode 7.1
  4. ios开发--清理缓存
  5. 详解Windows平台搭建Androiod开发环境
  6. IntelliJ IDEA 配置Jetty
  7. Gprinter Android SDK V1.0 使用说明
  8. SQL Server 死锁检查
  9. 【原创】leetCodeOj --- Find Minimum in Rotated Sorted Array II 解题报告
  10. UVa 10491 - Cows and Cars
  11. 基于HTML5 Canvas 实现弹出框
  12. Node.js 字符串解码器
  13. Error: Invoke-customs are only supported starting with Android O (--min-api 26)
  14. css_属性
  15. 知识点---animate()动画滞后执行的解决方案
  16. 转载 Spring、Spring MVC、MyBatis整合文件配置详解
  17. 最小生成树模板题POJ - 1287-prim+kruskal
  18. js高级-作用域链
  19. Java并发编程的艺术(一)——并发编程需要注意的问题
  20. iOS开发 - Core Animation 核心动画

热门文章

  1. finereport 填报 单元格 JS 触发 提交SQL 事件
  2. 【计算机视觉】背景建模--Vibe 算法优缺点分析
  3. 关于绕过cookie 同源策略,和同时向前台返回图片和脚本的解决方案
  4. WTForms常用的验证器
  5. HDU 1231 最大连续子序列 (动态规划)
  6. vim 文档加密
  7. (5.6)mysql高可用系列——MySQL Utilities 管理工具
  8. 深入理解分布式系统的2PC和3PC
  9. 【计算机网络】-介质访问子层-(信道划分介质访问控制&amp;随机访问介质访问控制)
  10. PHP空对象 空数组