使用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实现快速排序的一个简单例子的主要内容,如果未能解决你的问题,请参考以下文章

C++ 随机化快速排序 最简单易懂的代码! 基于归并分区思想实现

快速排序算法(Java实现)

排序算法:快速排序java实现

快速排序-递归实现

归并排序

数据结构-排序之快速排序(使用Java代码实现)