常见的排序算法:
快速排序(QuickSort ):
选取一个基准,将大于基准的值放到右边,小于基准的放到左边,然后在以基准为分割点,将数组分成两部分,每一部分重复之前的方法排序
public class QuickSort {
public static void main(String[] args) {
int[] array = {10,9,8,7,6,5,4,3,2,1};
System.out.println("排序前:");
System.out.println(Arrays.toString(array));
quickSort(array,0,array.length-1);
System.out.println("\n排序后:");
System.out.println(Arrays.toString(array));
}
public static void quickSort(int[] array,int left,int right){
if(left>right){
return;
}
int stand = array[left];//设当前区间第一个元素为基准
int i = left;
int j = right;
while (i != j){//如果i==j说明以移动完毕,比基准小的在基准左边,比基准大的在基准右边
/*下面需要注意的点:
如果你是想从小到大排序,那么先从循环右边,也就是j
如果你是想从大到小排序,那么先从循环左边,也就是i
当然,大于号与小于号也需要相应的更改
*/
//找到右边小于stand的元素
while (i<j && array[j]>=stand){
j--;
}
//找到左边大于stand的元素
while (i<j && array[i]<=stand){
i++;
}
//如果i<j,交换两个元素的值
if(i<j){
swap(array,i,j);
}
}
//将基准放入中间位置(数值大小的中间)
swap(array,i,left);
quickSort(array,left,i-1);
quickSort(array,i+1,right);
}
public static void swap(int[] array,int i,int j){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}