题意:按照第二行数组里给的间距实现多次shell排序
题解:很基础的shell排序
代码:
import java.util.*;
public class Main {
public static void shellSort(String[] array,int index,int pos){
for(int i=pos;i<array.length;i++){
String temp = array[i];
int j=0;
for(j=i-index;j>=0;j=j-index){
if(Integer.parseInt(temp)<Integer.parseInt(array[j])){
array[j+index]=array[j];
}else{
break;
}
}
array[j+index]=temp;
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int e_num = Integer.parseInt(scan.nextLine());//测试数
while(e_num>0){
String[] array = scan.nextLine().split(" ");
String[] iarray = scan.nextLine().split(" ");
for(int i=0;i<iarray.length;i++){
for(int j=0;j<array.length;j++){
shellSort(array,Integer.parseInt(iarray[i]),j);
}
}
for(int i=0;i<array.length;i ++){
if(i!=array.length-1){
System.out.print(array[i]+" ");
}else{
System.out.print(array[i]);
}
}
System.out.println();
e_num --;
}
}
}