快速排序(面试中常考)

Posted helloworld0903

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序(面试中常考)相关的知识,希望对你有一定的参考价值。

package com.atguigu.array.sort;

/**
* 快速排序
* 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,
* 则分别对这两部分继续进行排序,直到整个序列有序。
* @author shkstart
* 2018-12-17
*/
public class QuickSort
private static void swap(int[] data, int i, int j)
int temp = data[i];
data[i] = data[j];
data[j] = temp;

private static void subSort(int[] data, int start, int end)
if (start < end)
int base = data[start];
int low = start;
int high = end + 1;
while (true)
while (low < end && data[++low] - base <= 0)
;
while (high > start && data[--high] - base >= 0)
;
if (low < high)
swap(data, low, high);
else
break;


swap(data, start, high);

subSort(data, start, high - 1);//递归调用
subSort(data, high + 1, end);


public static void quickSort(int[] data)
subSort(data,0,data.length-1);



public static void main(String[] args)
int[] data = 9, -16, 30, 23, -30, -49, 25, 21, 30 ;
System.out.println("排序之前:\n" + java.util.Arrays.toString(data));
quickSort(data);
System.out.println("排序之后:\n" + java.util.Arrays.toString(data));

以上是关于快速排序(面试中常考)的主要内容,如果未能解决你的问题,请参考以下文章

PHP面试题通俗易懂的两个面试必问的排序算法讲解:冒泡排序和快速排序

快速排序

排序--快速排序学习

快速排序详细讲解

快速排序算法温习

快速排序的实现