快速排序的递归实现算法。
输入:先输入进行排序元素的个数,然后依次随机输入(或随机生成)每个数字。
输出:元素排序后的结果。
示例:输入:8 9 1 2 4 8 6 15 8,输出:1 2 4 6 8 8 9 15
package FinalTest_2;
import java.util.Scanner;
public class QuickSort {
static void quicksort(int arr[], int left, int right) {
if (left < right) { //序列有效,至少两个元素(相等也用不着排序、)
int i = left;
int j = right;
int vot = arr[i]; //设第一个元素为基准值
while (i != j) { //相等元素不交换顺序
while(i < j && vot <= arr[j]) j--; //从右向左找第一个小于vot的数,未找到不移动基准值
if(i<j) arr[i++]=arr[j]; //找到子序列后面小的往前移动
while(i < j && vot >= arr[i]) i++; //从左往右找比vot大的数,未找到的情况循环右移
if(i<j) arr[j--]=arr[i]; //找到的情况子序列前面大的往后移(别忘了两端向中间渐近)
}
arr[i]=vot; // 基准值达到最终位置i==j,将基准数填入arr[i]中
quicksort(arr,left,i-1); //前端子序列递归调用
quicksort(arr,j+1,right);
}
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int arr[]=new int[n];
for (int i = 0; i < arr.length; i++) {
arr[i]=s.nextInt();
}
quicksort(arr,0,arr.length-1);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}