package math;
import java.util.Arrays;
import java.util.Collections;
/**
* 快速排序(简单实现)
* User: zhangyong
* Date: 13-6-16
* Time: 下午9:45
* To change this template use File | Settings | File Templates.
*/
public class QuickSort {
public static void sort(int[] arr, int low, int high) {
int pivot;
if (low < high) {
pivot = partition(arr, low, high);
sort(arr, low, pivot - 1);
sort(arr, pivot + 1, high);
}
}
public static int partition(int[] arr, int low, int high) {
int pivotKey = arr[low];
while (low < high) {
while (low < high && arr[high] >= pivotKey) {
high--;
}
//将比枢纽记录小的记录交换到低端
swap(arr, low, high);
while (low < high && arr[low] <= pivotKey) {
low++;
}
swap(arr, low, high);
}
return low;
}
public static void swap(int[] arr, int low, int high) {
int temp = arr[low];
arr[low] = arr[high];
arr[high] = temp;
}
public static void main(String[] args) {
int[] arr = new int[]{
5,
1,
2,
3,
10,
12
};
sort(arr, 0, 5);
for(int i : arr){
System.out.print(i + " ");
}
}
}
分享到:
相关推荐
数据结构中九大排序算法:直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,简单选择排序,堆排序,归并排序,基数排序,就时间复杂度,空间复杂度,稳定性,基本原理的简要总结与比较
十大常用排序算法整理及C++实现。包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序,并对简要说明了算法步骤及相应的算法复杂度。
利用随机函数生成30000个随机正整数,用多种方法进行排序。...3.分别计算每种算法排序所花费的时间,并简要对比分析。 4.程序最好有菜单供选,有信息提示。 解压密码:www.shanalyso.com或者www.weikux.com
基本的排序算法有如下几种:交换排序(冒泡排序、快速排序)、选择排序(直接选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、分配排序(基数排序、箱排序、计数排序)。下面依次列出各种算法的...
(1) 对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。 (2) 待排序的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作为...
十字链表 经典算法题每日演练——第二十题 三元组 经典算法题每日演练——第十九题 双端队列 经典算法题每日演练——第十八题 外排序 经典算法题每日演练——第十七题 Dijkstra算法 经典算法题每日演练——第十六题 ...
蓝桥杯Python相关的知识点记录包括基础知识点、数据结构等算法实现以及真题练习项目说明。以下是对这些内容的简要概述: 一、基础知识点 ...排序与查找:如冒泡排序、快速排序、二分查找等算法的实现和应用。
14.2.3 快速排序 447 14.2.4 选择 452 14.2.5 距离最近的点对 454 14.3 解递归方程 462 14.4 复杂性的下限 463 14.4.1 最小最大问题的下限 464 14.4.2 排序算法的下限 465 第15章 动态规划 467 15.1 算法思想 467 ...
14.2.3 快速排序 447 14.2.4 选择 452 14.2.5 距离最近的点对 454 14.3 解递归方程 462 14.4 复杂性的下限 463 14.4.1 最小最大问题的下限 464 14.4.2 排序算法的下限 465 第15章 动态规划 467 15.1 算法思想 467 ...
更新了双路快速排序与三路快速排序 2017-09-26 使用快速排序中思路 寻找到数组中第几大的元素 2017-09-27 添加了domain包,更新了最大堆和控制台打印最大堆的数据结构,更新了堆排序,与堆排序构建的heapify优化,稍稍...
排序算法:该程序包含不同O(nlogn)排序算法的实现,包括快速排序、归并排序和堆排序。 展开树:该程序是值间隔的展开树的实现。 更多描述见 最近对:该程序从二维平面上的一组点中找到最近的对。 更多描述见 ...
14.2.3 快速排序 447 14.2.4 选择 452 14.2.5 距离最近的点对 454 14.3 解递归方程 462 14.4 复杂性的下限 463 14.4.1 最小最大问题的下限 464 14.4.2 排序算法的下限 465 第15章 动态规划 467 15.1 算法思想 467 ...
leetcode题库 Java学习代码仓库 特别鸣谢 大佬对我在Java学习上的支持,是我Java学习引路人 讲授的数据结构和算法课,受益匪浅,bobo老师是我认为课讲得最好的算法老师。...快速排序 拓扑排序(待更新)
学习算法设计可以从基础算法开始,包括递归、概率分析和随机算 法、堆排序、快速排序、线性时间排序、⼆叉树搜索、图算法等内容。 第三:⼈⼯智能基础。⼈⼯智能基础内容的学习是打开⼈⼯智能⼤门的钥匙,⼈⼯智能...
3.3 快速排序算法 3.4选择排序算法 3.5直接插入算法 3.6希尔排序算法 3.7 二分查找算法 3.8 二叉树 3.9 图的实现 3.10 生产者消费者的实现 3.11 银行家算法 3.12 KMP算法 3.13 RSA的实现 第4章 IO流实例开发 4.1流...
分布式并行搜集技术、启发式搜集策略、镜像消除技术、中英文特征项提取技术、高效索引技术、词典更新技术、超链分析技术、快速检索技术、相关度评价策略、Hash排序算法、Cache策略、中文词汇学习技术和用户行为分析...
有必要买leetcode吗[目录] Leetcode 问题的解决方案 此 repo 旨在记录 Leetcode 问题或面试中在线判断问题的解决方案。 另一个 ...也包含了数百个解决方案,但它是一个大...快速排序 * 华为机试随机数去重和排序 * HUAWEI
数据重复会导致数据挖掘模型发生变化,应予以消除,但是检测重复数据的有效方法包括使用基于排序/合并原理的基本邻接排序算法。在实际的生产和生活中,数据不可避免地会有很多漏洞。这是在现实世界中生成的数据集的...