package 排序算法.快速排序;
import java.util.Arrays;
/**
* 算法思想:从待排序列中随便选择一个元素作为基准,使得基准左边的元素都比它小,右边的都比它大,然后就一直按照这个
* 操作做递归,最终完成排序。
*/
public class QuikSort {
public static void main(String[] args) {
int[] array = {0,12,-5,3,8,4,2,-7,1};
quikSort(array,0,array.length-1);
System.out.println(Arrays.toString(array));
}
//创建快速排序的方法
public static void quikSort(int[] arry,int left,int right){
//结束条件
if(left>=right){
return ;
}
int i = left; //左下标
int j = right;//右下标
//选择一个基准值
int key = arry[i];
while(i<j){ //只要滑动下标不重合就继续
//开始滑动下标(从右往左滑动j下标)
while((arry[j]>key)&&i<j){ //i<j是为了防止下标越界
j--;
}
if(i<j){ //当arry[j]小于key时,则交换位置
int temp = arry[j];
arry[j] = arry[i]; //这里的arry[i]就是基准值key
arry[i] = temp;
}
//接着从左向右滑动i下标
while (arry[i]<key&&i<j){
i++;
}
if(i<j){ //当arry[i]大于key时,则交换位置
int temp = arry[i];
arry[i] = arry[j]; //这里的arry[j]是上面交换后的基准值,实质就是key
arry[j] = temp;
}
}
//迭代操作
quikSort(arry, left, i-1);//基准值左边部分
quikSort(arry, i+1, right);//基准值右边部分
}
}
快速排序算法
于 2021-12-14 13:33:43 首次发布