package 课程;
/**
*
* Title: ArraySort
*
* Description:
* 数组:排序 二分查找
* @version v0.01
*
* @author ByChai
*
* @date 2020年7月23日 上午8:57:09
*
*
*/
public class 快速排序 {
public static void main(String[] args) {
int[] arr=new int[]{34,19,27,73,56};
System.out.println("原数组");
for (int i : arr) {
System.out.print(i+" ");
}
//1.冒泡排序
//注意下标
/*for(int i=0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-1-i;j++) {
//相邻比较
//小前边 大后边
if(arr[j]>arr[j+1]) {//交换
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}*/
//2.简单选择排序
/*for(int i=0;i<arr.length;i++) {
int k=i;//表示最小值索引
for(int j=k+1;j<arr.length;j++) {
if(arr[k]>arr[j]) {
k=j;
}
}
if(k!=i) {
int temp=arr[i];
arr[i]=arr[k];
arr[k]=temp;
}
}*/
quickSort(arr, 0,arr.length-1);
System.out.println();
//遍历
System.out.println("排序后");
for (int i : arr) {
System.out.print(i+" ");
}
}
public static void quickSort(int[] arr,int start,int end) {
if(start<end) {
int low=start;//低位下标
int height=end;//高位下标
int key=arr[start];//基准
while(height>low){
while(height>low&&arr[height]>=key) {
height--;
}
if(arr[height]<=key) {//arr[height] 比key小
//放到low区
int temp=arr[height];
arr[height]=arr[low];
arr[low]=temp;
}
while(height>low&&arr[low]<=key) {
low++;
}
if(arr[low]>key) {
int temp=arr[low];
arr[low]=arr[height];
arr[height]=temp;
}
}
quickSort(arr, start, low-1);//小区数组
quickSort(arr, height+1, end);//大区数组
}
}
}
快速排序在排序笔试中占很大概率