import java.util.Arrays;
import org.apache.commons.lang.ArrayUtils; public class Test { public static void main(String[] args) {
int[] sortedArrays = quickSort(new int[]{3, 5, 1, 2});
System.out.println(ArrayUtils.toString(sortedArrays));
} /**
* Run time is O(nlogn)
*
* @param source source array
* @return sorted array
*/
private static int[] quickSort(int[] source) { int sourceSize = source.length; final byte baseLen = 2; // An array that is empty or contains only one element is ordered
if (sourceSize < baseLen) {
return source;
} // pivot value
int pivotVal = source[sourceSize / 2]; return combineList(quickSort(sortLeft(source, pivotVal)), pivotVal, quickSort(sortRight(source, pivotVal)));
} private static int[] sortLeft(int[] source, int pivotVal) {
return sort(source, pivotVal, true);
} private static int[] sortRight(int[] source, int pivotVal) {
return sort(source, pivotVal, false);
} private static int[] sort(int[] source, int pivotVal, boolean isLeft) {
int[] subArray = new int[source.length - 1];
int j = 0;
for (int value : source) {
boolean condition = isLeft && value < pivotVal || !isLeft && value > pivotVal;
if (condition) {
subArray[j++] = value;
}
}
return Arrays.copyOf(subArray, j);
} private static int[] combineList(int[] less, int pivotVal, int[] greater) {
int[] a1 = ArrayUtils.add(less, pivotVal);
return ArrayUtils.addAll(a1, greater);
} }

java实现的一个【快速排序 】算法【原创】的更多相关文章

  1. 用 Java 实现一个快速排序算法

           快速排序是排序算法中效率最高的一种,它是利用递归的原理,把数组无限制的分成两个部分,直到所有数据都排好序为止. 快速排序是对冒泡排序的一种改进.它的基本思想是通过一趟排序将要排序的数据分 ...

  2. 快速排序算法 java 实现

    快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分 ...

  3. 排序系列 之 快速排序算法 —— Java实现

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

  4. 排序算法系列:快速排序算法JAVA版(靠谱、清晰、真实、可用、不罗嗦版)

    在网上搜索算法的博客,发现一个比较悲剧的现象非常普遍: 原理讲不清,混乱 啰嗦 图和文对不上 不可用,甚至代码还出错 为了不误人子弟耽误时间,推荐看一些靠谱的资源,如[啊哈!算法]系列: https: ...

  5. Java快速排序算法

    快速排序算法思想: 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一 ...

  6. Java,Mysql-根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法

    Java,Mysql-根据一个给定经纬度的点,进行附近500米地点查询–合理利用算法   LBS 球面距离公式 http://wiki.myoa.info/zh-blog:20 Java,Mysql- ...

  7. java实现快速排序算法

    1.算法概念. 快速排序(Quicksort)是对冒泡排序的一种改进.由C. A. R. Hoare在1962年提出.2.算法思想. 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据 ...

  8. 只用120行Java代码写一个自己的区块链-3挖矿算法

    在本系列前两篇文章中,我们向大家展示了如何通过精炼的Java代码实现一个简单的区块链.包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法. 大家都无不惊呼比特币.以太坊及其他 ...

  9. AJPFX实践 java实现快速排序算法

    快速排序算法使用的分治法策略来把一个序列分为两个子序列来实现排序的思路: 1.从数列中挑出一个元素,称为“基准“2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面 ...

  10. 快速排序算法(Java)

    快速排序算法的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另外一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序. class Parti ...

随机推荐

  1. consul:健康检查

    官方文档:https://www.consul.io/docs/agent/checks.html consul提供的健康检查有以下几种: 1.script+interval 2.http+inter ...

  2. 1 Dalvik和Java虚拟机

    Dalvik虚拟机特点: 1.  体积小 2.  DEX格式可执行文件,相比java运行速度快 3.  常量池采用32位索引值 4.  提供对象生命周期,堆栈,线程,权限,异常等管理 5.  Andr ...

  3. AR-运行自动开票主程序报错

    问题: 在AR运行自动开票主程序时出现如下错误提示: 错误日志: raagsp()+ 当前的系统时间为 12-09-2014 07:23:58 raagsp()- 当前的系统时间为 12-09-201 ...

  4. 微服务spring-cloud 学习第一天

    了解微服务     微服务架构风格是一种将单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常使用HTTP).这些服务围绕业务能力构建并且可通过自动部署 ...

  5. url请求时,参数中的+在服务器接收时为空格,导致AES加密报出javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher

    报错的意思的是使用该种解密方式出入长度应为16bit的倍数,但实际的错误却不是这个,错误原因根本上是因为在http请求是特殊字符编码错误,具体就是base64生成的+号,服务器接收时成了空格,然后导致 ...

  6. Kali linux network is unreachable

    使用树莓派4 安装完kali linux后,配置好ip,能ping通上级路由. 但ping公网地址显示网络不可达. Ping: connect: network is unreachable 解决方法 ...

  7. Docker容器的简单使用

    1. docker的使用 1> 创建容器 创建并启动容器: docker run -it -name 容器名 镜像: 版本  /bin/sh(bash) 创建并不启动容器:docker crea ...

  8. SQL血的教训

    1.    每次查询的数据要有限制     2013年1月  产品独立数据库,由于多条SQL每次查询数据超过几千条,有些超过10万条数据未分页,造成应用服务器CPU有时持续100%. 2.    禁止 ...

  9. Kudu+Impala介绍

    Kudu+Impala介绍 概述 Kudu和Impala均是Cloudera贡献给Apache基金会的顶级项目.Kudu作为底层存储,在支持高并发低延迟kv查询的同时,还保持良好的Scan性能,该特性 ...

  10. 软件工程1916|W(福州大学)_助教博客】助教总结

    2018年上个学期,我担任计算机专业软件工程实践课程的助教,因为有汪老师和她的两位优秀研究生担任助教,基本上没有让我做什么事,除了参加了几次课程答辩.我对于助教需要做的事情其实还是没什么概念的.这个学 ...