重排序
输入一个8位有效数字和指定剔除的位数,将剩余数字从大到小排序打印。若输入内容不是数字或者超过有效位数,返回"error"。
import java.util.*;
import static java.util.Collections.reverse;
public class Main {
public static java.lang.String input(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个8位数的数字:");
String str = null;
int n = 0;
if(scanner.hasNextInt()){
int number = scanner.nextInt();
n = scanner.nextInt();
str = String.valueOf(number);
if(str.length()<8||str.length()>8){
return "error";
}
}else {
return "error";
}
return rSort(str,n);
}
private static java.lang.String rSort(String str, int n) {
String str1 = str.substring(0,n-1)+str.substring(n);
char[] char1 = str1.toCharArray();
charsQuickSort(char1,0,char1.length-1);
List list = new ArrayList();
for(int i = 0;i<char1.length;i++){
list.add(char1[i]);
}
reverse(list);
StringBuilder sb = new StringBuilder();
for(int i = 0;i<list.size();i++){
sb.append(list.get(i));
}
return sb.toString();
}
public static int charsPartition(char[] a, int left, int right){
int l,r;
char temp;
l=left;
r=right;
temp=a[l]; //首元素作为分界值
while(l<r){
while(a[r]>temp&&l<r)
r--;
if(l<r){
a[l]=a[r];
l++;
}
while(a[l]<temp&&l<r)
l++;
if(l<r){
a[r]=a[l];
r--;
}
}
a[l]=temp;
return l;
}
//字符串排序的快速排序算法
public static void charsQuickSort(char[] a, int left, int right){
int p;
if(left<right){
p = charsPartition(a,left,right);
charsQuickSort(a,left,p-1);
charsQuickSort(a,p+1,right);
}
}
public static void main(String[] args) {
System.out.println(input());
}
}