首页 > 编程 > Java > 正文

java实现快速排序

2019-11-06 06:18:04
字体:
来源:转载
供稿:网友
int[] a = {12, 20, 5, 16, 15, 1, 30, 45, 23, 9};int start = 0;int end = a.length - 1;sort(a, start, end);for (int i = 0; i < a.length; i++) {	System.out.PRintln(a[i]);}//////////////////////////////////////////////////////////////////////////////////////public static void sort(int[] a, int low, int high) {//        int[] a = {12,20,5,16,15,1,30,45,23,9};int start = low;int end = high;int key = a[low];while (end > start) {	//从后往前比较	while (end > start && a[end] >= key)  //如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较		end--;	if (a[end] <= key) {		int temp = a[end];		a[end] = a[start];		a[start] = temp;	}	//从前往后比较	while (end > start && a[start] <= key)//如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置		start++;	if (a[start] >= key) {		int temp = a[start];		a[start] = a[end];		a[end] = temp;	}	//此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用}//递归if (start > low) sort(a, low, start - 1);//左边序列。第一个索引位置到关键值索引-1if (end < high) sort(a, end + 1, high);//右边序列。从关键值索引+1到最后一个}		15912151620233045
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表