快速排序(快排)

匿名 (未验证) 提交于 2019-12-03 00:37:01

快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

算法处理过程(截图参考 坐在马桶上看算法:快速排序):

代码:

public class QuickSort {      public static void sort(int[] arr, int low, int high){         int l = low;         int h = high;         int tmp = 0;         if (l <= h){//扫描低位标小于高位标             tmp = arr[l];             while (l != h){//从两边交替扫描,直到l=h                 while (h>l && arr[h]>tmp) h--;                 //从右往左扫描,找到第一个比基准数据小的数,进行替换                 arr[l] = arr[h];                 while (l<h && arr[l]<tmp) l++;                 //从左往右扫描,找到第一个比基准数据大的数,进行替换                 arr[h] = arr[l];             }             arr[h] = tmp;             sort( arr, low, l-1 );  //对基准元素左边的数据进行排序             sort( arr, h+1, high ); //对基准元素右边的数据进行排序         }     }      public static void main(String[] args){         int[] arr = {10, 2, 1, 7, 12, 23, 32, 4, 6, 98};         sort( arr, 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!