快速排序

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

在这里插入图片描述
我的理解
快速排序快在哪里,每一次放对一个数的位置,都将该位置的前后两侧数据进行分割了,下一次的排序量就减少了。冒泡一次遍历只能找一个数,而快速排序,第一次一个,第二次2个,第三次4个,这样的快速下去。
代码

package suanFa;
import  java.util.Arrays;


public class KuaiShu {
	/**
	 * 快速排序
	 *
	 * @param arr 数组(乱序)
	 * @param left 数组左端下标
	 * @param right 数组右端下标
	 * @return
	 */
	public static int[] quickSort(int[] arr, int left, int right) {
	    int i, j, t, temp;
	    if (left > right) {
	        return arr;
	    }
	    System.out.println(Arrays.toString(arr));
	    temp = arr[left];//temp即基准数
	    i = left;
	    j = right;
	    while (i != j) {
	        //顺序很重要,先从右往左找
	        while (arr[j] >= temp && i < j) {
	            j--;
	        }
	        while (arr[i] <= temp && i < j) {
	            i++;
	        }
	        if (i < j) {//哨兵i与j没有相遇时
	            t = arr[i];
	            arr[i] = arr[j];
	            arr[j] = t;
	        }
	    }
	    //基数归位
	    // temp = arr[left];
	    arr[left] = arr[i];
	    arr[i] = temp;
	    //递归
	    quickSort(arr, left, i - 1);
	    quickSort(arr, i + 1, right);
	    return arr;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] arr = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8};
	    System.out.println("排序中:");
	    int[] quickSort = quickSort(arr, 0, 9);
	    System.out.println("排序后:");
	    System.out.println(Arrays.toString(quickSort));
	}

}

运行结果
快速排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值