使用java实现快速排序的一个简单例子
Posted 大坑水滴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用java实现快速排序的一个简单例子相关的知识,希望对你有一定的参考价值。
public static void main(String[] args) { // 测试排序 Random r = new Random(); int arr[] = new int[10]; for(int i=0;i<10;i++) { arr[i] = r.nextInt(100); } System.out.println("before sort"); for(int i:arr) { System.out.print(i+","); } fastSort(arr, 0, arr.length-1); System.out.println("after sort"); for(int i:arr) { System.out.print(i+","); } } public static void fastSort(int[] arr, int left, int right) { /** * i 从左侧查找时的索引 * j 从右侧查找时的索引 * tmp 交换数据时,临时变量 * baseVal 交换比较的基准值 */ int i, j, tmp, baseVal; if (left > right) { return; } baseVal = arr[left]; i = left; j = right; while (i != j) { // i和j不相同,则进行下面的操作 // 要先从右向左找 while (arr[j] >= baseVal && i < j) { // 直到找到比baseVal大的值为止 j--; } // 再从左向右找 while (arr[i] <= baseVal && i < j) { // 直到找到比baseVal小的值为止 i++; } // 交换两个数在数组中的位置 if (i < j) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } // 最终将基准归为 arr[left] = arr[i]; arr[i] = baseVal; // 递归获取左侧和右侧各排序结果 fastSort(arr, left, i - 1); fastSort(arr, i + 1, right); }
以上是关于使用java实现快速排序的一个简单例子的主要内容,如果未能解决你的问题,请参考以下文章