快速排序

每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。
快速排序是不稳定的,时间复杂度(平均):nlogn

public class QuickSort {
public static void Sort(int[] arr, int low, int high) {
int i, j, temp;
if (low > high) {
return;
}
i = low;//一定要注意是从low开始的
j = high;
// temp就是基准位
temp = arr[low];
while (i < j) {
//从右向左,找到小于基准位的数组成员位置
while (temp <= arr[j] && i < j) {
j--;
}
//从左向右,找到大于基准位的数组成员位置
while (temp >= arr[i] && i < j) {
i++;
}
//如果满足条件则交换arr[i],arr[j]
if (i < j) {
swap(arr, i, j);
}
}
//最后将基准为与i和j相等位置的数字交换(此时i j相等)
arr[low] = arr[i];
arr[i] = temp;
//分而治之
Sort(arr, low, i - 1);
Sort(arr, i + 1, high);
} public static void swap(int[] a, int i, int j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
} public static void main(String[] args) {
int[] arr = { 4, 5, 9, 4, 7, 23, 3, 4, 2, 1, 8, 11, 19, 10 };
Sort(arr, 0, arr.length - 1);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}

快速排序 JAVA实现的更多相关文章

  1. 快速排序 Java实现的快速排序

    快速排序  Java实现的快速排序: package xc; import java.util.Arrays; import java.util.Random; /** * * @author dax ...

  2. 基本排序算法——快速排序java实现

    简单的快速排序算法,我竟然花费了如此多的时间来写作,好好学习. /** * */ package basic.sort; import java.util.Arrays; import java.ut ...

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

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

  4. 快速排序 java详解

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

  5. ADV-297 快速排序 java

    问题描述 用递归来实现快速排序(quick sort)算法.快速排序算法的基本思路是:假设要对一个数组a进行排序,且a[0] = x.首先对数组中的元素进行调整,使x放在正确的位置上.同时,所有比x小 ...

  6. 快速排序-java

    排序-快速排序 基本思想: 将数据划分为两部分,左边的所有元素都小于右边的所有元素:然后,对左右两边进行快速排序. 划分方法: 选定一个参考点(中间元素),所有元素与之相比较,小的放左边,大的放右边. ...

  7. 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现

    这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...

  8. 排序算法之快速排序(java实现)

    package com.javaTest300; public class Test039 { public static void main(String[] args) {// 快速排序 int ...

  9. 快速排序java

    快速排序(Quicksort)是对冒泡排序的一种改进.它是先在数组中找到一个关键数,第一趟排序将比关键数小的放在它的左边,比关键数大的放在它的右边.当第一趟排序结束后,再依次递归将左边和右边的进行排序 ...

  10. 快速排序Java实现

    package practice; import edu.princeton.cs.algs4.*; public class TestMain { public static void main(S ...

随机推荐

  1. joda-time的使用

    值得一提的是该功能被整合到Java 8 中 ,被称为java8 新特新之一  .这意味着不用到包 <!-- 时间操作组件 -->          <dependency>   ...

  2. 用Msxml2.XMLHTTP 与 Msxml2.ServerXMLHTTP 发生网页请求

    发送 HTTP 请求时,首先想到的一般是 Msxml2.XMLHTTP(Microsoft.XMLHTTP 已经不提倡使用了). ServerXMLHTTP 为不同 Web 服务器之间的服务器安全 H ...

  3. 快速变幻AABB的顶点

    [快速变幻AABB的顶点] 当要变幻一个AABB时,可以快速计算变幻后顶点的AABB.当有旋转时,根据8个顶点变幻后的AABB可能会更大. AABB的八个顶点需分别作如下变幻: 注意到为了使 x' 最 ...

  4. fbx模型动画提取教程附带一个用代码提取的方法

    角色已经人形化(Humanoid)了,那它的动画可以用在其它的模型上了也就是可以共用一套模型动画了但是你有没有发现那动画是和fbx模型绑在一起的,没关系你可以选中这几个动画文件按Contrl+D就可以 ...

  5. MySQL学习2---索引

    MySQL 索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 索引分单列索引和组合索引.单列索引,即一个索引只包含单个列,一个表可以有多个单列索引, ...

  6. js输出/获得Cookie

    js输出/获得Cookie //方法 1 function setCookie(name, value) { var Days = 365; var exp = new Date(); exp.set ...

  7. 微交互:App成功的秘诀

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 最好的产品拥有两个很棒的特点:功能和细节.产品的功能可成功吸引到人们的注意力,而产品的细节则可留住你 ...

  8. nginx 负载均衡 使用ip_hash方式解决session问题 测试

    ip_hash的方式比较弱智,但是在一般情况下是挺有效的~~,如果能保证nginx是最上一层的代理,那么能够得到用户的ip是真实位置,就能做到负载,但是一家公司的所有员工其实走的是同一个ip,那么在这 ...

  9. gradle使用总结

    ###打包时跳过单元测试

  10. WCF技术剖析(卷1)WCF全面解析文摘

    第1章 wcf简介 soa体现的是一种对关注点进行分解的思想,与技术无关 soa的基本思想: a.服务自治  独立部署,不依赖其他 b.依赖于开放的标准  采用xml,xsd,及wsdl作为服务描述的 ...