交换排序——快速排序

快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的),一般选择序列的第一个元素。

转载:http://www.cnblogs.com/hjy9420/p/5032309.html

时间: 2024-11-08 18:56:41

交换排序——快速排序的相关文章

交换排序---快速排序算法(Javascript版)

快速排序是对冒泡排序的一种改进.通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,最终达到整个数据变成有序序列. 假设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为基准数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对

交换排序—快速排序(Quick Sort)

基本思想: 1)选择一个基准元素,通常选择第一个元素或者最后一个元素, 2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小.另一部分记录的 元素值比基准值大. 3)此时基准元素在其排好序后的正确位置 4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序. 快速排序的示例: (a)一趟排序的过程: (b)排序的全过程 算法的实现: 递归实现: void print(int a[], int n){ for(int j= 0; j<n; j++)

内部排序-&gt;交换排序-&gt;快速排序

文字描述  快速排序是对起泡排序的一种改进.它的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序. 一趟快速排序描述:假设待排序的序列为{L.r[s], L.r[s+1], - , L.r[t]},首先任意选取一个记录(通常选第一个记录L.r[s])作为枢轴(pivot), 然后按下述原则重新排列其余记录:将所有关键字较它小的记录都安置在它的位置之前,将所有关键字较它大的记录都安置在它

java排序-交换排序-快速排序

优化前(传统): /** * 快速排序 */ @Test public void kuaiSuTest(){ /** * 1.选择一个基点 * 2.从两边开始向基点遍历,与基点比较,大小位置不对的就互换位置 * 3.遍历结束排序完成 */ sort(data,0,data.length-1); System.out.println(Arrays.toString(data)); } public static void sort(int[] data,int low,int height){ i

交换排序---快速排序

将需要排序的数组,定义一个标准数字,和一个开始位置(下标),和一个最后位置 (下标) (标准数字是开始位置的数字)   (6,8,2,9,4,12,1) 先在最后位置开始,把最后位置的数字和标准数字比较,如果最后位置的数字比标准数字大,则将最后位置向前移动一位 如果最后位置的数字比标准数字小,则将最后位置的数字赋给开始位置的数字,依次比较,先将数组排成 (1,4,2,6,8,9,12) 下面将(1,4,2,6,8,9,12)分成两个数组(1,4,2,6)和(8,9,12) 再将(1,4,2,6)

快速排序(内排序)

1 /** 2 * 3 */ 4 package com.trfizeng.changesort; 5 6 /** 7 * @author trfizeng 内部排序 交换排序—快速排序(Quick Sort) 8 */ 9 public class QuickSort { 10 11 // 寻找关键字的位置 12 public static int wordKey(int[] array, int low, int high) { 13 int word = array[low]; 14 wh

(2)排序之快速排序

参考:http://www.cnblogs.com/jingmoxukong/p/4302891.html 要点 快速排序是一种交换排序. 快速排序由C. A. R. Hoare在1962年提出. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数. 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 详细的图解往往比大堆的文字更有说明力,所以直接上图: 上图中,演示了快速排序的处理过程:

排序二 快速排序

要点 快速排序是一种交换排序. 快速排序由C. A. R. Hoare在1962年提出. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数. 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 详细的图解往往比大堆的文字更有说明力,所以直接上图: 图-快速排序示例图 图-快速排序示例图中,演示了快速排序的处理过程: 初始状态为一组无序的数组:2.4.5.1.3. 经过以上操作步骤后,完成

(转载)排序二 快速排序

排序二 快速排序 目录 要点 算法分析 快速排序算法的性能 时间复杂度 空间复杂度 算法稳定性 完整参考代码 JAVA版本 参考资料 相关阅读 要点 快速排序是一种交换排序. 快速排序由C. A. R. Hoare在1962年提出. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数. 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 详细的图解往往比大堆的文字更有说明力,所以直接上图: