基于java的快速排序算法_快速排序算法(java实现)

快速排序算法是基于冒泡排序的,是对冒泡排序算法的一个改进。快速排序的效率比较高,是因为它的交换是跳跃式的。每次设置一个基准值,在比较的时候,将小于基准值的元素移到左边,将大于基准值的元素移到右边,这边一般不会只交换相邻的两个数。因此比较和交换的次数都会减少了,排序的效率自然也就高了。

快速排序的思想:

①在数组中找一个基准值,一般是取第一个数(纯粹为了方便);

②建立一个索引right,从数组的尾端开始遍历,直到找到一个比基准值小的数,记录此位置(j);

③建立一个索引left,从数组的首端开始遍历,直到找到一个比基准值大的数,记录此位置(i);

④当 i < j,则交换i和j两个位置上的值,并且继续在j-1位置开始往前遍历,在i+1位置开始往后遍历;

⑤当i == j,证明本次的比较已经结束,此时将i位置的值与基准值交换,基准值已经放在了最终的位置(此时基准值左边的元素都比基准值要小,基准值右边的元素都比基准值要大);

⑥在①~⑤的步骤中,基准值已经放在了正确的位置,我们可以对基准值左边的分区以及基准值右边的分区分别重复进行①~⑤的步骤,直到所有元素有序。

通过以上的步骤可以看出,快速排序算法其实是基于分治算法来实现的。不难写出实现代码:

public classMain {public static voidmain(String[] args) {

Scanner sc= newScanner(System.in);

System.out.println("请输入数组大小:");int size =sc.nextInt();int[] arr = new int[size];

System.out.println("请输入数组:");for(int i = 0; i < size; i++) {

arr[i]=sc.nextInt();

}

quickSort(arr);for(inta : arr) {

System.out.print(a+ " ");

}

}public static void quickSort(int[] arr) {if(arr == null || arr.length <= 1)return;

sort(arr,0, arr.length-1);

}public static void sort(int[] arr, int left, intright) {if(left >right)return;int baseVal =arr[left];int i = left, j =right;while(i !=j) {while(arr[j] >= baseVal && j >i) {

j--;

}while(arr[i] <= baseVal && j >i) {

i++;

}if(i

arr[i]=arr[j];

arr[j]=temp;

}

}

arr[left]=arr[i];

arr[i]=baseVal;

sort(arr, left, i-1);

sort(arr, i+1, right);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值