`

快速排序简要算法

 
阅读更多

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 + " ");
        }
    }

}

分享到:
评论

相关推荐

    数据结构中九大排序算法的简要总结

    数据结构中九大排序算法:直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,简单选择排序,堆排序,归并排序,基数排序,就时间复杂度,空间复杂度,稳定性,基本原理的简要总结与比较

    十大排序算法.pdf

    十大常用排序算法整理及C++实现。包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序,并对简要说明了算法步骤及相应的算法复杂度。

    C# 排序练习

    利用随机函数生成30000个随机正整数,用多种方法进行排序。...3.分别计算每种算法排序所花费的时间,并简要对比分析。 4.程序最好有菜单供选,有信息提示。 解压密码:www.shanalyso.com或者www.weikux.com

    常用排序算法的C语言版实现示例整理

    基本的排序算法有如下几种:交换排序(冒泡排序、快速排序)、选择排序(直接选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、分配排序(基数排序、箱排序、计数排序)。下面依次列出各种算法的...

    《程序设计实践》报告及源码3-6-6

    (1) 对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。 (2) 待排序的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作为...

    数据结构算法

    十字链表 经典算法题每日演练——第二十题 三元组 经典算法题每日演练——第十九题 双端队列 经典算法题每日演练——第十八题 外排序 经典算法题每日演练——第十七题 Dijkstra算法 经典算法题每日演练——第十六题 ...

    蓝桥杯(Python)相关知识点记录,包含基础知识点,数据结构等算法实现,真题练习

    蓝桥杯Python相关的知识点记录包括基础知识点、数据结构等算法实现以及真题练习项目说明。以下是对这些内容的简要概述: 一、基础知识点 ...排序与查找:如冒泡排序、快速排序、二分查找等算法的实现和应用。

    数据结构与算法:C++描述

    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 ...

    数据结构算法与应用-C++语言描述

    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题库-leetcodeJava:leetCode的java解法参考

    更新了双路快速排序与三路快速排序 2017-09-26 使用快速排序中思路 寻找到数组中第几大的元素 2017-09-27 添加了domain包,更新了最大堆和控制台打印最大堆的数据结构,更新了堆排序,与堆排序构建的heapify优化,稍稍...

    SmallProjects:我对有用算法、数据结构和其他编码问题的实现

    排序算法:该程序包含不同O(nlogn)排序算法的实现,包括快速排序、归并排序和堆排序。 展开树:该程序是值间隔的展开树的实现。 更多描述见 最近对:该程序从二维平面上的一组点中找到最近的对。 更多描述见 ...

    数据结构算法与应用-C__语言描述

    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题库-ofcoursejava:学习代码仓

    leetcode题库 Java学习代码仓库 特别鸣谢 大佬对我在Java学习上的支持,是我Java学习引路人 讲授的数据结构和算法课,受益匪浅,bobo老师是我认为课讲得最好的算法老师。...快速排序 拓扑排序(待更新)

    如何学习人工智能.pdf

    学习算法设计可以从基础算法开始,包括递归、概率分析和随机算 法、堆排序、快速排序、线性时间排序、⼆叉树搜索、图算法等内容。 第三:⼈⼯智能基础。⼈⼯智能基础内容的学习是打开⼈⼯智能⼤门的钥匙,⼈⼯智能...

    java自学之道

    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问题的日志解决方案

    有必要买leetcode吗[目录] Leetcode 问题的解决方案 此 repo 旨在记录 Leetcode 问题或面试中在线判断问题的解决方案。 另一个 ...也包含了数百个解决方案,但它是一个大...快速排序 * 华为机试随机数去重和排序 * HUAWEI

    大数据中的数据预处理技术分析.docx

    数据重复会导致数据挖掘模型发生变化,应予以消除,但是检测重复数据的有效方法包括使用基于排序/合并原理的基本邻接排序算法。在实际的生产和生活中,数据不可避免地会有很多漏洞。这是在现实世界中生成的数据集的...

Global site tag (gtag.js) - Google Analytics