package test;
/**
* 插入排序 递归算法
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Insertsort1 {
private static Scanner in = new Scanner(System.in);
public static List<Integer> fun() {
System.out.println("请输入数字(按回车结束):");
List<Integer> lis = new ArrayList<Integer>();
String[] str = in.nextLine().replaceAll("[\\W&&[^-]]+|[a-zA-Z_]+", " ")
.replaceAll("-", " -").replaceAll("- +", "").trim().split(" +");
System.out.println("升序输出:");
if (str[0].isEmpty()) {
System.out.println("Error: 没有数字");
fun();
} else {
for (String s : str)
lis.add(Integer.parseInt(s));
}
return lis;
}
public static void recursive(List<Integer> list,int start,int end,int length){
if(end<length){
int index=end;
int tem=0;
//查找最后一个元素应该插入到哪个位置,找到则退出循环
for (int i = start; i < end; i ++) {
if (list.get(end) < list.get(i)) {
index = i;
tem = list.get(end);
break;
}
}
//如果找到指定位置了,则指定位置元素开始集体向后挪动一个单位,否则不变
if (index != end) {
for (int i = end - 1; i >= index; i --) {
list.set(i + 1, list.get(i));
}
list.set(index, tem);
}
end ++;
recursive(list, start, end, length);
}
}
public static void main(String[] args) {
List<Integer> quest=fun();
int length=quest.size();
recursive(quest,0,1,length);
System.out.println(quest);
}
}
/**
* 插入排序 递归算法
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Insertsort1 {
private static Scanner in = new Scanner(System.in);
public static List<Integer> fun() {
System.out.println("请输入数字(按回车结束):");
List<Integer> lis = new ArrayList<Integer>();
String[] str = in.nextLine().replaceAll("[\\W&&[^-]]+|[a-zA-Z_]+", " ")
.replaceAll("-", " -").replaceAll("- +", "").trim().split(" +");
System.out.println("升序输出:");
if (str[0].isEmpty()) {
System.out.println("Error: 没有数字");
fun();
} else {
for (String s : str)
lis.add(Integer.parseInt(s));
}
return lis;
}
public static void recursive(List<Integer> list,int start,int end,int length){
if(end<length){
int index=end;
int tem=0;
//查找最后一个元素应该插入到哪个位置,找到则退出循环
for (int i = start; i < end; i ++) {
if (list.get(end) < list.get(i)) {
index = i;
tem = list.get(end);
break;
}
}
//如果找到指定位置了,则指定位置元素开始集体向后挪动一个单位,否则不变
if (index != end) {
for (int i = end - 1; i >= index; i --) {
list.set(i + 1, list.get(i));
}
list.set(index, tem);
}
end ++;
recursive(list, start, end, length);
}
}
public static void main(String[] args) {
List<Integer> quest=fun();
int length=quest.size();
recursive(quest,0,1,length);
System.out.println(quest);
}
}