`

快速排序简要算法

 
阅读更多

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

}

分享到:
评论

相关推荐

    用java实现快速排序

    根据给定文件的信息,本文将围绕“用Java实现快速排序”的主题进行展开,不仅解析标题与描述中的核心知识点,还会对部分代码示例进行解读,最后结合这些信息给出一个完整的快速排序算法实现。 ### 快速排序算法简介...

    jquery快速排序算法动画特效.zip

    以下是使用jQuery实现快速排序动画效果的一个简要步骤: 1. **HTML结构**:创建一个包含待排序元素的`&lt;ul&gt;`列表,每个元素可以是一个`&lt;li&gt;`,其中的文本代表待排序的数值。 2. **CSS样式**:定义`&lt;li&gt;`的初始样式,...

    各种排序算法比较(java实现)

    本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合Java语言的实现进行解析。 1. **合并排序(Merge Sort)**: 合并排序是一种基于分治策略的排序算法...

    八大排序算法(手撕):冒泡排序、选择排序、插入排序、基数排序、堆排序、希尔排序、快速排序(单排)、归并排序

    6. 快速排序:采用分治策略,选取一个基准元素,将序列分为两部分,一部分小于基准,另一部分大于基准,然后对这两部分递归进行快速排序。平均时间复杂度为O(n log n),但在最坏情况下(输入已完全排序或逆序)为O(n...

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

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

    Java实现遍历、排序、查找算法及简要说明.docx

    此外,文档还提到了其他排序算法,如冒泡排序、选择排序、快速排序、归并排序、堆排序、计数排序和桶排序等,虽然没有提供具体代码,但这些都是常见的排序算法,各有其适用场景和性能特点。 3. **查找算法**: - ...

    排序(下):如何用快排思想在O(n)内查找第K大元素?.pdf

    在正式讨论如何使用快速排序的思想解决此问题之前,我们先简要回顾一下快速排序的基本概念以及其核心思想。 **快速排序**是一种高效的排序算法,采用分治策略来把一个序列分为较小和较大的两个子序列,然后递归地...

    JAVA排序汇总 java应用中一些比较经典的排序算法

    对于大规模数据,最好选择时间复杂度为O(nlogn)的排序算法,如快速排序、堆排序或归并排序。这些算法虽然比较复杂,但其效率在大数据量时远高于O(n^2)的算法。 在Java中实现这些排序算法时,通常会使用数组作为数据...

    算法设计常用四种排序

    本文将详细介绍四种常见的排序算法:选择排序、起泡排序、归并排序和快速排序,并给出对应的伪代码及简要分析。 #### 一、选择排序 **概述:** 选择排序的基本思想是从待排序的数据元素中选出最小(或最大)的一个...

    几种排序算法的代码实现

    - **快速排序**:一种高效的排序算法,采用分治策略。通过选取一个基准元素,将数组分为两部分,使得一部分的所有元素都小于另一部分的所有元素,然后递归地对这两部分分别进行排序。 - **堆排序**:基于二叉堆...

    经典的排序算法C++实现大全

    4. 快速排序(Quick Sort):由C.A.R. Hoare提出的,使用了分治策略。选择一个“枢轴”元素,将序列分成两部分,一部分的所有元素小于枢轴,另一部分的元素大于枢轴,然后再对这两部分进行排序。平均时间复杂度为O(n...

    [总结]各大内部排序算法性能比较+程序实现

    根据给定文件的信息,本文将对五种内部排序算法(插入排序、冒泡排序、简单选择排序、快速排序以及归并排序)进行性能比较,并简要介绍这些算法的基本原理及其实现过程。以下是对每种排序算法的具体分析: ### 一、...

    一维数组的快速排序以及查找(递归迭代分别实现)

    文章将涵盖快速排序的基本原理、递归与迭代实现方式,以及查找算法的递归与迭代实现。此外,还会简要介绍递归与迭代的概念及其相互转换的方法。 ### 快速排序 快速排序是一种非常高效的排序算法,它基于分治策略。...

    C++基本排序算法,教你简单的逻辑排序

    交换排序通常指的是快速排序,虽然描述中提到的“交换排序”可能是个误解,但为了完整性,我们还是简要介绍一下。快速排序是由C.A.R. Hoare提出的,其基本思想是选取一个基准元素,将小于基准的元素移动到其左边,...

    C#各种排序算法代码

    快速排序是C++之父Dijkstra提出的,采用分治策略,选取一个基准值,将数组分为两部分,一部分所有元素都小于基准,另一部分所有元素都大于基准,然后对这两部分再进行快速排序。C#实现中会用到递归,以及一个名为...

    排序算法总结

    这里我们总结了四种常见的排序算法:交换排序、插入排序和选择排序,并简要提及了快速排序。 1. **交换排序**: - **冒泡排序**:其基本思想是通过重复遍历数组,比较相邻元素并交换,使得每次遍历都能把最大(或...

    C# 经典排序算法大全和二分查找算法

    排序是将一组数据按照特定顺序进行排列的过程,常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。以下是对这些算法的简要介绍: 1. 冒泡排序:通过不断交换相邻的逆序元素来逐步完成...

    用C++实现各种排序算法

    本文将详细探讨在C++语言中实现的几种常见排序算法,包括快速排序、Shell排序、堆排序、折半排序、冒泡排序、归并排序以及B树的实现,并对直接排序法进行简要介绍。 1. **快速排序**:由C.A.R. Hoare提出的快速排序...

Global site tag (gtag.js) - Google Analytics