接受完数组后,用不可有重复元素的Set接收数组,转换成数组后利用快排的思想排序数组。
import java.util.*;
public class Main{
private int[] sortList;
public static void main(String[] args){
int num=0;
Scanner input = new Scanner(System.in);
while(input.hasNextInt()){
Set<Integer> depSet = new HashSet<>();
Main m = new Main();
num=input.nextInt();
for (int i=0; i<num; i++){
depSet.add(input.nextInt());
}
Integer[] temp = depSet.toArray(new Integer[] {});
m.sortList = new int[temp.length];
for (int i=0; i<temp.length; i++){
m.sortList[i] = temp[i].intValue();
}
m.recQuickSort(0, m.sortList.length-1);
for (int i : m.sortList)
System.out.println(i);
}
}
protected void swap(int dex1, int dex2){
int temp = sortList[dex1];
sortList[dex1] = sortList[dex2];
sortList[dex2] = temp;
}
protected int partition(int leftPtr, int rightPtr, int pivot){
int right = rightPtr;
while(true){
while(leftPtr < rightPtr && sortList[leftPtr] <= pivot)
leftPtr++;
while(leftPtr < rightPtr && sortList[rightPtr] >= pivot)
rightPtr--;
if (leftPtr >= rightPtr)
break;
else
swap(leftPtr, rightPtr);
}
swap(leftPtr, right);
return leftPtr;
}
protected void recQuickSort(int left , int right){
if(left >= right)
return;
else{
int pivot = sortList[right];
int partition = partition(left, right, pivot);
recQuickSort(left, partition-1);
recQuickSort(partition+1, right);
}
}
} 
京公网安备 11010502036488号