快速排序(Java)

xiaoxiao2021-02-28  45

一、概念 快速排序(QuickSort)是对起泡排序的一种改进。它的基本思想是,通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 二、图解

三、Java代码

package com.hgldp.web; import java.util.Arrays; public class TestTwo { public static void main(String[] args) { int[] arr = {23,8,19,40,12,45,9,1,90,20};//待排序的数组 quickSort(arr, 0, arr.length-1); System.out.println(Arrays.toString(arr)); } public static void quickSort(int[] arr,int low,int high){ if(low<high){//如果待排序的关键字的个数大于1 sortMethod(arr, low, high); } } //递归方法 public static void sortMethod(int[] arr,int low,int high){ if(low>=high){//如果low的位置大于或等于high的位置,就结束了 return ; } int j =high; int key = arr[low];//取关键字 while(low<high){//在一趟内 while(low<high && arr[high]>key){//high往后移动 high--; } arr[low]=arr[high];//j往后移动过程中总会找到一个比key小的 while(low<high && arr[low]<=key){//low往前移动 low++; } arr[high]=arr[low];//极端情况,high=low也没关系,互相赋值,等于没有变化 } arr[low] = key;//循环到最后,arr[low]上面的值一定是无用的值,把key放到这个位置上去 sortMethod(arr, low+1, j);//低位递归 sortMethod(arr,0,low-1);//高位递归 } }

四、把快速排序的思想掌握,代码就很好写了。如有不足,欢迎指出。

转载请注明原文地址: https://www.6miu.com/read-2623164.html

最新回复(0)