`
zxspopo
  • 浏览: 4616 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java排序算法(五):快速排序

阅读更多
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

    假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序。一躺快速排序的算法是:

   1)、设置两个变量I、J,排序开始的时候I:=1,J:=N;

   2)以第一个数组元素作为关键数据,赋值给X,即X:=A[1];

   3)、从J开始向前搜索,即由后开始向前搜索(J:=J-1),找到第一个小于X的值,两者交换;

   4)、从I开始向后搜索,即由前开始向后搜索(I:=I+1),找到第一个大于X的值,两者交换;

   5)、重复第3、4步,直到I=J;



package algorithms.sort;

import algorithms.AbstractSort;

public class QuickSort extends AbstractSort {

    @Override
    public void sort(int[] array) {
       quickSort(array,0,array.length-1);
    }

    public void quickSort(int[] array, int from, int to) {
        if (to - from < 1) {
            return;
        }

        int pivot = from;

        pivot = partion(array, from, to, pivot);

        quickSort(array, from, pivot - 1);
        quickSort(array, pivot + 1, to);
    }

    private int partion(int[] array, int from, int to, int pivot) {
        int tmp = array[pivot];


        while (from != to) {
            while (from < to && array[to] - tmp > 0) {
                to--;
            }
            if (from < to) {
                array[from] = array[to];
                from++;
            }

            while (from < to && array[from] - tmp < 0) {
                from++;
            }

            if (from < to) {
                array[to] = array[from];
                to--;
            }
        }

        array[from] = tmp;
        return from;
    }
}

分享到:
评论

相关推荐

    Java排序算法练习:1.快速排序 2.归并排序 3.插入排序 4.冒泡排序 5.选择排序 6.堆排序

    这里我们将深入探讨标题和描述中提到的六种排序算法:快速排序、归并排序、插入排序、冒泡排序、选择排序以及堆排序。 1. **快速排序**:由C.A.R. Hoare在1960年提出,是一种高效的分治算法。快速排序的基本思想是...

    Java排序算法实现:冒泡与选择排序示例代码

    Java排序算法实现主要涉及到两种经典的算法:冒泡排序和选择排序。这两种算法都是基于比较的排序方法,适用于小规模或教学目的的数据排序。 **冒泡排序(Bubble Sort)** 是一种简单直观的排序算法,其核心思想是...

    分别使用Java和Python实现快速排序算法.zip

    快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法....

    JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序

    本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...

    java排序算法

    ### Java排序算法详解 在Java编程中,排序算法是数据结构与算法中不可或缺的一部分,它不仅能够帮助我们理解和处理数据,还能提升程序的性能。本文将深入探讨Java中常见的几种基本排序算法,包括插入排序、交换排序...

    快速排序算法的java实现

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的...

    Java经典算法教程:快速排序-代码非常清晰小白也能看懂

    快速排序是一种广泛使用的排序算法,由C.A.R. Hoare在1960年提出。它的核心思想是分而治之(Divide and Conquer),将一个大问题分解成两个或多个相同或相似的小问题,直到这些小问题可以简单地直接求解,原问题的解...

    快速排序算法java代码

    "快速排序算法java代码" 快速排序算法是由Tony Hoare在1960年提出的一种排序算法,它的平均时间复杂度为O(n log n),是目前最快的排序算法之一。下面我们将详细地讲解快速排序算法的java代码实现。 快速排序算法的...

    高效排序算法:快速排序Java与Python实现详解

    内容概要:文章详述了快速排序算法的基本概念、分治策略以及具体实现方式,提供Java和Python两个版本的代码样例。快速排序算法能够将一个序列分解成较小和较大的两部分,并通过递归的方式分别对这两部分进行排序,...

    Java排序算法大全

    Java排序算法大全是一份专为Java开发者准备的学习资源,涵盖了各种经典的排序算法,旨在帮助初学者和有经验的程序员深入理解排序的原理和实现。排序是计算机科学中的基础且重要的概念,它在数据处理、数据库操作、...

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

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

    Java各种排序算法代码.

    在编程领域,排序算法是计算机科学中的核心概念,特别是在Java这样的高级编程语言中。排序算法是用来组织和优化数据结构的关键工具,它可以帮助我们快速查找、分析和处理数据。本资源包含的是Java实现的各种常见排序...

    java排序算法-大全.rar

    这个名为"java排序算法-大全.rar"的压缩包文件显然包含了多种Java实现的排序算法,这对于我们理解和掌握这些算法至关重要。 首先,让我们从标签提及的两个经典排序算法开始:冒泡排序和折半排序。 1. **冒泡排序**...

    Java排序算法和查找算法

    该工具包含有Java一些比较常见的排序算法和查找算法。 排序算法包括:冒泡排序、选择排序 、插入排序、希尔排序、快速排序、归并排序、基数排序(桶排序) 查找算法包括:线性查找、二分查找、插值查询、斐波那契...

    详解Java常用排序算法-快速排序

    快速排序(Quick Sort)是一种分治思想的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到...

    JAVA排序算法集合

    以上介绍了Java排序算法中常见的几种方法及其变体。每种算法都有其特点和适用场景,例如当数据量较小时可以选择直接插入排序或直接选择排序;当数据量较大时,归并排序和快速排序则更为合适。理解这些算法的工作原理...

    JAVA冒泡排序和快速排序算法

    在JAVA中,实现这两种排序算法可以使用面向对象的特性,创建一个类如`MaopaoKuaisu.java`,在这个类中定义两个方法,分别实现冒泡排序和快速排序。类的结构可能如下: ```java public class MaopaoKuaisu { public...

    冒泡排序资源,Java排序实现,java实现各种排序算法:冒泡排序、选择排序、插入排序、Shell排序、快速排序、堆排序、合并排序等

    冒泡排序,冒泡排序资源,Java排序实现,java实现各种排序算法:冒泡排序、选择排序、插入排序、Shell排序、快速排序、堆排序、合并排序等。

    各种排序算法java源代码

    本资源提供了Java语言实现的五种经典排序算法:冒泡排序、快速排序、插入排序、选择排序以及测试程序。下面将详细介绍这四种排序算法的原理、特点以及Java实现的关键点。 1. **冒泡排序**: 冒泡排序是一种简单...

Global site tag (gtag.js) - Google Analytics