简单的快速排序算法,我竟然花费了如此多的时间来写作,好好学习。

 /**
*
*/
package basic.sort; import java.util.Arrays;
import java.util.Random; public class QuickSort { public static <AnyType extends Comparable<? super AnyType>>
void quickSort(AnyType[] arr){
if(arr == null || arr.length ==0){
return ;
}
AnyType key = arr[0];
int low = 0,high =arr.length -1;
while(low < high){
while(arr[high].compareTo(key) > 0 && high > 0){
--high ;
}
while(arr[low].compareTo(key) <= 0 && low < arr.length-1){
++low;
}
if(low < high){
AnyType tmp = arr[low];
arr[low] = arr[high];
arr[high] = tmp;
}
}
arr[0] = arr[high];
arr[high] = key; //println(Arrays.toString(arr)); quickSort(arr, 0 ,high-1);
quickSort(arr,high+1,arr.length-1);
} public static <AnyType extends Comparable<? super AnyType>>
void quickSort(AnyType[] arr, int l,int h){
if(arr == null || arr.length ==0
|| l >= h){
return ;
}
AnyType key = arr[l];
int low = l+1;
int high = h; while(low < high){
while(arr[high].compareTo(key) > 0 && high > l ){
--high ;
}
while(arr[low].compareTo(key) < 0 && low < h){
++low;
}
if(low < high){
AnyType tmp = arr[low];
arr[low] = arr[high];
arr[high] = tmp;
}
}
arr[l] = arr[high];
arr[high] = key; quickSort(arr, l ,high-1);
quickSort(arr,high+1,h);
} public static void main(String[] args) {
Random rand = new Random();
Integer[] arr = new Integer[10];
for(int i = 0 ;i <10 ;i++){
arr[i] = rand.nextInt(1000);
}
println(Arrays.toString(arr));
quickSort(arr);
println(Arrays.toString(arr));
} public static void println(String str){
System.out.println(str);
} }

认真努力

基本排序算法——快速排序java实现的更多相关文章

  1. 排序算法----快速排序java

    快速排序是对冒泡排序的一种改进,平均时间复杂度是O(nlogn) import java.util.Arrays; import java.util.Scanner; public class tes ...

  2. 《Java算法》排序算法-快速排序

    排序算法-快速排序: /** * 给定一个数组:按照从小到大排序. * 思路: * 1. 获取第一个数放入临时变量data,将大于data的数放右边,小于data的数放在左边. * 2. data左边 ...

  3. 常见排序算法(附java代码)

    常见排序算法与java实现 一.选择排序(SelectSort) 基本原理:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他 ...

  4. 几大排序算法的Java实现

    很多的面试题都问到了排序算法,中间的算法和思想比较重要,这边我选择了5种常用排序算法并用Java进行了实现.自己写一个模板已防以后面试用到.大家可以看过算法之后,自己去实现一下. 1.冒泡排序:大数向 ...

  5. 7种基本排序算法的Java实现

    7种基本排序算法的Java实现 转自我的Github 以下为7种基本排序算法的Java实现,以及复杂度和稳定性的相关信息. 以下为代码片段,完整的代码见Sort.java 插入排序 /** * 直接插 ...

  6. 几种简单的排序算法(JAVA)

    几种排序算法(JAVA) 一.代码 package com.hdwang; import java.util.Arrays; /** * Created by admin on 2017/1/20. ...

  7. 常见排序算法总结 -- java实现

    常见排序算法总结 -- java实现 排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间 ...

  8. 几大排序算法的Java实现(原创)

    几大排序算法的Java实现 更新中... 注: 该类中附有随机生成[min, max)范围不重复整数的方法,如果各位看官对此方法有什么更好的建议,欢迎提出交流. 各个算法的思路都写在该类的注释中了,同 ...

  9. 数据结构和算法(Golang实现)(25)排序算法-快速排序

    快速排序 快速排序是一种分治策略的排序算法,是由英国计算机科学家Tony Hoare发明的, 该算法被发布在1961年的Communications of the ACM 国际计算机学会月刊. 注:A ...

随机推荐

  1. SSIS Design2:增量更新

    一般来说,ETL实现增量更新的方式有两种,第一种:记录字段的最大值,如果数据源中存在持续增加的数据列,记录上次处理的数据集中,该列的最大值:第二种是,保存HashValue,快速检查所有数据,发现异动 ...

  2. C#设计模式系列:状态模式(State)

    1.状态模式简介 1.1>.定义 状态模式的核心思想是允许一个对象在它的内部状态改变时改变它的行为,即不同的状态对应不同的行为. 状态模式的针对性很强,当有状态变化的时候可以选择状态模式. 1. ...

  3. jQuery源码分析系列(34) : Ajax - 预处理jsonp

    上一章大概讲了前置过滤器和请求分发器的作用,这一章主要是具体分析每种对应的处理方式 $.ajax()调用不同类型的响应,被传递到成功处理函数之前,会经过不同种类的预处理(prefilters). 预处 ...

  4. 前端学PHP之面向对象系列第五篇——对象操作

    × 目录 [1]对象克隆 [2]对象比较[3]对象串行化[4]json 前面的话 本文主要介绍面向对象中的一些对象操作 对象克隆 对象复制,又叫对象克隆,可以通过 clone 关键字来完成 在多数情况 ...

  5. Mobile Web中URL设计问题

    自己虽然也注册了CSDN账号,但是没有在上面发表过博客等内容.不过经常在Google里面搜索相关内容时,会显示csdn的结果.这也说明国内很多IT人员都会在CSDN发表博客,记录解决问题过程或者想法. ...

  6. Visual Studio 2015 开发 ASP.NET 5 有何变化?

    本篇博文目录: ASP.NET 5 模版 ASP.NET 5 目录结构 前端管理工具 无编译开发 Microsoft Git Provider 智能感知和错误信息 Smart Unit Testing ...

  7. golang开发环境配置及Beego框架安装

    配置环境:Windows7推荐IDE:LiteIDEGO下载地址:http://www.golangtc.com/downloadBeego开发文档地址:http://beego.me/docs/in ...

  8. php广告图片循环播放 幻灯片效果

    <!DOCTYPE> <html> <head> <meta http-equiv="content-type" content=&quo ...

  9. Oracle启动报错ORA-03113解决

    环境:RHEL6.4 + Oracle 11.2.0.4 步骤摘要:1.启动报错ORA-031132.查看alert日志查找原因3.根据实际情况采取合理的措施,这里我们先增加闪回区大小,把库启动起来4 ...

  10. JS几种排序算法

    一.冒泡排序 var bubble = function(arr){ ;i<;i++){ ;j<-i;j++){ ]){ temp = arr[j]; arr[j] = arr[j+]; ...