码迷,mamicode.com
首页 > 编程语言 > 详细

使用java实现快速排序的一个简单例子

时间:2018-08-28 20:23:06      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:结果   获取   简单   val   ring   ase   fast   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实现快速排序的一个简单例子

标签:结果   获取   简单   val   ring   ase   fast   java   使用   

原文地址:https://www.cnblogs.com/qq931399960/p/9550026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!