查看所有50道基础算法题请看:
Java的50道基础算法题
package Demo30Array_Insert;
import java.util.Arrays;
import java.util.Scanner;
import static java.lang.Integer.*;
public class Array_Insert {
/**
* 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
*/
/*
分析:有一个已经排好序的数组,我们可以直接构建一个数组,也可以让用户输入一组数据,然后将它转换成数组,
再排序,传统的如冒泡法之类的,这里为了简单,我想还是用Arrays类的sort()方法来排序
在插入这一步操作,我们再去遍历这个数组。总体思路就这些。
*/
public static void main(String[] args) {
//获取用户的输入
Scanner sc = new Scanner(System.in);
System.out.println("请您输入一组数字,以逗号(中英文都可)结尾:");
String nums = sc.next();
//将这个字符串分割成字符串数组
String[] splits = nums.split(",|,");
System.out.println(splits.length);
//创建一个跟字符串数组一样长的int数组
int[] array = new int[splits.length];
try{
//将这个字符串数组转换成数字装到int数组中
for (int i = 0; i < splits.length; i++) {
array[i]= parseInt(splits[i]);
}
//使用Arrays的toString方法得到一个原先数组的字符串
String origin = Arrays.toString(array);
//使用Arrays的sort()方法对数组进行排序
Arrays.sort(array);
//再次使用toString方法获得一个排过序之后的数组字符串形式
String sorted = Arrays.toString(array);
System.out.println("原先的数组:"+origin);
System.out.println("排序后的数组:"+sorted);
//获取用户要插入的数字
System.out.println("请您输入需要插入的数字: ");
int in = sc.nextInt();
//开始插入,新建一个长度比原来数组加一个的新int数组
int[] insert = new int[array.length+1];
//定义一个标记,来确定那个数字有没有插进去,没插进去是true,插进去后设为false
boolean flag = true;
//遍历两个数组,插入数字
for (int j = 0; j <= array.length; j++) {
if(flag){
if(in<=array[j]){
insert[j]=in;
flag=false;
}else{
insert[j]=array[j];
}
}else{
insert[j]=array[j-1];
}
}
System.out.println(Arrays.toString(insert));
}catch (NumberFormatException e){
System.out.println("您输入的数字格式不对,请重新输入,一定要是数字哦...");
}
}
}