赞
踩
快速排序是对冒泡排序的一种改良版,通过一趟排序,把要排序的序列分割成两个部分,一部分的所有数据要比另一部分的数据都小,然后再根据这两部分的数据来进行快速排序。以此来达到整一个数据都变成了有序序列。
(1)快速排序基本思路
(2)快速排序的应用场景
(3)快速排序的优缺点
(1)整体代码实现
public class QuickSort {
public static void main(String[] args) {
int[] arr = {25,12,20,31,8,46,15,4,50,10};
System.out.println("排序前:");
System.out.println(Arrays.toString(arr));
quickSort(arr,0,9);
System.out.println("排序后:");
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr,int leftIndex,int rightIndex){
//递归 如果左边的索引大于右边的索引,跳出循环,递归结束
if(leftIndex>rightIndex){
return;
}
int left = leftIndex;
int right = rightIndex;
//定义基准值
int key = arr[left];
//扫描左边跟右边的数字,只有当left<right的时候才会循环
while(left<right){
//右边 找到一个最小的基准值,从右指针向前开始找
while (right>left && arr[right]>=key){
right--;
}
//找到之后,交换值
arr[left] = arr[right];
//左边 找到大于基准值的数字,从左指针向后开始找
while(left<right && arr[left]<=key){
left++;
}
//找到之后,交换值
arr[right]=arr[left];
//执行到这步,left=right,基准值归位
arr[left]=key;
//递归调用,对基准值左边的元素进行排序
quickSort(arr,leftIndex,left-1);
//递归调用,对基准值右边的元素进行排序
quickSort(arr,right+1,rightIndex);
}
}
}
(2)运行结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。