数组——找正确位置插入数值

 需求:定义一个数组并给定元素,要求从控制台输入值,找到相应的位置插入数值,插入数值后依旧保持升序

思路:1、定义数组,将数组先排序,再复制排序后的数组,防止插入数值时出现赋值失败

           2、循环遍历排序后的数组,找出要插入的位置

           3、定义新数组长度比原数组多1,遍历新数组,找到对应位置并插入数值,将原数组的其他值添加到新数组中,保持升序

代码如下:


import java.util.Arrays;
import java.util.Scanner;

public class HomeWork03_studentup {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int[] arr = new int[] { 99, 85, 82, 63, 60 };    //定义数组并给定元素
		Arrays.sort(arr);		//通过Arrays。sort方法,使数组arr升序排序
		int[] narr = (int[]) arr.clone();	//复制排序后的数组,防止排序后的数组结构改变,导致重新赋值或者插入数据运行错误
		int[] newarr = new int[6];		//定义一个新数组,固定长度为6个元素
		int i;
		for (i = 0; i < arr.length; i++) {		//遍历数组内的内容,并打印输出
			System.out.print(arr[i] + " ");
		}
		System.out.println();
		System.out.print("请输入要插入的成绩:");
		int num = input.nextInt();    //定义插入的值为int型,并将从控制台输入的值赋值到该变量
		boolean value = true;
		System.out.println("新数组");   
		for (i = 0; i < newarr.length; i++) {		//遍历新数组,找位置插入数值
			if (value) {		//进行判断,如果最后一个元素之前匹配上了,则跳出循环
				if (i < 5) {
					if (arr[i] < num) {		//输入的元素与数组内的每个元素进行比较,如果输入的元素比该数组的值要大,则该下标所对应的元素就是原来的元素
						newarr[i] = narr[i];
					} else {
						newarr[i] = num;	//如果输入的值不比下标所对应的值大,则将输入的值插入该位置
						value = false;
					}
				} else {		//如果最后该数组最后一个值不比输入的值大,则最后一个下标对应的值就是输入的值,并赋值
					newarr[i] = num;
				}
			} else {	//元素找到插入的位置之后,将原数组后面的值后移,赋值到新数组的所插入的元素后面
				newarr[i] = narr[i - 1];
			}
			System.out.print(newarr[i] + " ");
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值