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实现快速排序”的主题进行展开,不仅解析标题与描述中的核心知识点,还会对部分代码示例进行解读,最后结合这些信息给出一个完整的快速排序算法实现。 ### 快速排序算法简介...
以下是使用jQuery实现快速排序动画效果的一个简要步骤: 1. **HTML结构**:创建一个包含待排序元素的`<ul>`列表,每个元素可以是一个`<li>`,其中的文本代表待排序的数值。 2. **CSS样式**:定义`<li>`的初始样式,...
本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合Java语言的实现进行解析。 1. **合并排序(Merge Sort)**: 合并排序是一种基于分治策略的排序算法...
6. 快速排序:采用分治策略,选取一个基准元素,将序列分为两部分,一部分小于基准,另一部分大于基准,然后对这两部分递归进行快速排序。平均时间复杂度为O(n log n),但在最坏情况下(输入已完全排序或逆序)为O(n...
数据结构中九大排序算法:直接插入排序,折半插入排序,希尔排序,冒泡排序,快速排序,简单选择排序,堆排序,归并排序,基数排序,就时间复杂度,空间复杂度,稳定性,基本原理的简要总结与比较
此外,文档还提到了其他排序算法,如冒泡排序、选择排序、快速排序、归并排序、堆排序、计数排序和桶排序等,虽然没有提供具体代码,但这些都是常见的排序算法,各有其适用场景和性能特点。 3. **查找算法**: - ...
在正式讨论如何使用快速排序的思想解决此问题之前,我们先简要回顾一下快速排序的基本概念以及其核心思想。 **快速排序**是一种高效的排序算法,采用分治策略来把一个序列分为较小和较大的两个子序列,然后递归地...
本文将详细介绍四种常见的排序算法:选择排序、起泡排序、归并排序和快速排序,并给出对应的伪代码及简要分析。 #### 一、选择排序 **概述:** 选择排序的基本思想是从待排序的数据元素中选出最小(或最大)的一个...
- **快速排序**:一种高效的排序算法,采用分治策略。通过选取一个基准元素,将数组分为两部分,使得一部分的所有元素都小于另一部分的所有元素,然后递归地对这两部分分别进行排序。 - **堆排序**:基于二叉堆...
4. 快速排序(Quick Sort):由C.A.R. Hoare提出的,使用了分治策略。选择一个“枢轴”元素,将序列分成两部分,一部分的所有元素小于枢轴,另一部分的元素大于枢轴,然后再对这两部分进行排序。平均时间复杂度为O(n...
根据给定文件的信息,本文将对五种内部排序算法(插入排序、冒泡排序、简单选择排序、快速排序以及归并排序)进行性能比较,并简要介绍这些算法的基本原理及其实现过程。以下是对每种排序算法的具体分析: ### 一、...
文章将涵盖快速排序的基本原理、递归与迭代实现方式,以及查找算法的递归与迭代实现。此外,还会简要介绍递归与迭代的概念及其相互转换的方法。 ### 快速排序 快速排序是一种非常高效的排序算法,它基于分治策略。...
交换排序通常指的是快速排序,虽然描述中提到的“交换排序”可能是个误解,但为了完整性,我们还是简要介绍一下。快速排序是由C.A.R. Hoare提出的,其基本思想是选取一个基准元素,将小于基准的元素移动到其左边,...
快速排序是C++之父Dijkstra提出的,采用分治策略,选取一个基准值,将数组分为两部分,一部分所有元素都小于基准,另一部分所有元素都大于基准,然后对这两部分再进行快速排序。C#实现中会用到递归,以及一个名为...
实验目的:掌握希尔排序、快速排序、堆排序、归并排序算法。 数据结构设计简要描述: 采用四种排序算法对输入的n个整数进行排序。 算法设计简要描述: 希尔排序:.先选定一个小于n的整数llr作为第一增量,然后将...
这里我们总结了四种常见的排序算法:交换排序、插入排序和选择排序,并简要提及了快速排序。 1. **交换排序**: - **冒泡排序**:其基本思想是通过重复遍历数组,比较相邻元素并交换,使得每次遍历都能把最大(或...
排序是将一组数据按照特定顺序进行排列的过程,常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。以下是对这些算法的简要介绍: 1. 冒泡排序:通过不断交换相邻的逆序元素来逐步完成...