法一:

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

快速排序java代码的更多相关文章

  1. 常见的排序算法之Java代码解释

    一 简要介绍 一般排序均值的是将一个已经无序的序列数据重新排列成有序的 常见的排序分为: 1 插入类排序 主要就是对于一个已经有序的序列中,插入一个新的记录.它包括:直接插入排序,折半插入排序和希尔排 ...

  2. java 代码

    java 里的 pandas tablesaw DataFrame 再有就是 spark 了 java 代码规范 Java8特性详解 lambda表达式 Stream Sonar 规则检测 sprin ...

  3. 专题 查找与排序的Java代码实现(一)

    专题 查找与排序的Java代码实现(一) 查找(Searching) 线性查找(linear search) 属于无序查找算法,适合于存储结构为顺序存储或链接存储的线性表. 基本思想:从数据结构线形表 ...

  4. 快速排序 java详解

    1.快速排序简介: 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此 ...

  5. 快排的java实现方式,用java代码来实现快排

    1. 快排的思想 通过一趟排序将要排序的数据分割成独立的两部分,前一部分的所有数据都要小于后一部分的所有数据,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据的 ...

  6. 十大经典排序算法最强总结(含JAVA代码实现)(转)

    十大经典排序算法最强总结(含JAVA代码实现)   最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在“桶排序”算法中对每 ...

  7. 对一致性Hash算法,Java代码实现的深入研究

    一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...

  8. 怎样编写高质量的java代码

    代码质量概述     怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍.也请有过代码质量相关经验的朋友 ...

  9. 数据结构笔记--二叉查找树概述以及java代码实现

    一些概念: 二叉查找树的重要性质:对于树中的每一个节点X,它的左子树任一节点的值均小于X,右子树上任意节点的值均大于X. 二叉查找树是java的TreeSet和TreeMap类实现的基础. 由于树的递 ...

随机推荐

  1. MATLAB2014b parpool 报错,并行工具无法开启解决方法

    笔者一直在用matlab2014b,第一次使用并行工具parpool,但在运行别人的程序的过程中一直出现一个错误: Starting parallel pool (parpool) using the ...

  2. 攻防世界新手区pwn writeup

    CGfsb 题目地址:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5050 下载文 ...

  3. 华为HCNA乱学Round 4:RIP

  4. word2010目录和正文分开编页码

    最近公司要写文档,老板给了一个范文模板,其中目录和正文的页码就是分开编辑的.上网查了很多资料,基本上都没有附图,通过自己的摸索以后终于实现了.现在我就把实现过程跟截图一并奉上.

  5. LINQ查询表达式详解(2)——查询表达式的转换

    简介 C#在执行LINQ查询表达式的时候,并不会指定其执行语义,而是将查询表达式转换为遵循查询表达式模式的方法的调用.具体而言,查询表达式将转换为以下名称的调用:Where.Select.Select ...

  6. [Python3] 035 函数式编程 高阶函数

    目录 函数式编程 之 高阶函数 1. 引子 2. 系统提供的高阶函数 3. functools 包提供的 reduce 4. 排序 函数式编程 之 高阶函数 把函数作为参数使用的函数,叫高阶函数 1. ...

  7. 终于搞懂了vue 的 render 函数(一) -_-|||

    终于搞懂了vue 的 render 函数(一) -_-|||:https://blog.csdn.net/sansan_7957/article/details/83014838 render: h ...

  8. Spring 启动时加载资源

    Spring加载资源文件目前了解三种, @PostConstruct在Context加载完成之后加载.在创建各个Bean对象之前加载. 实现ApplicationRunner的run方法,Bean加载 ...

  9. python第三方库-图像处理库pillow

    python图像处理库pillow 安装 pip install pillow 使用 导入 from PIL import pillow 读取图像 picture = Image.open('test ...

  10. React 中的函数式思想

    函数式编程简要概念 函数式编程中一个核心概念之一就是纯函数,如果一个函数满足一下几个条件,就可以认为这个函数是纯函数了: 它是一个函数(废话): 当给定相同的输入(函数的参数)的时候,总是有相同的输出 ...