将23插入数组{10, 12, 45, 90}中,并且依旧保证升序{10, 12, 23, 45, 90}

方法一:

       1.实质就是扩容加上定位排序
        2.首先我们先完成扩容
        3.然后将添加的元素定位
        4.再使用冒泡排序的方法进行排序

Scanner input = new Scanner(System.in);
		int[] arr = {10, 12, 45, 90};
		do {
			int[] arr1 = new int[arr.length + 1];
			int temp1 = 0;
			System.out.println("请输入你要添加的内容");
			int num = input.nextInt();
			for( int i = 0;i < arr.length; i++) {
				arr1[i] = arr[i];
			}
			arr1[arr1.length - 1] = num;
			arr = arr1;
			// System.out.println("===扩容后===");
			// for ( int i = 0;i < arr.length; i++) {
			// 	System.out.print(arr[i] + " ");
			// }
			for( int i = 0;i < arr.length - 1; i++) {//循环次数
				for( int j = 0;j < arr.length - i - 1; j++) {//这是比较次数
					if (arr[j] > arr[ j + 1]) {
						temp1 = arr[j + 1];
						arr[j + 1] = arr[j];
						arr[j] = temp1;
					}
				}
			}
			// System.out.println("==排序后的数组==");
			for( int k = 0;k < arr.length; k++) {
				System.out.print(arr[k] + " ");
			}
			System.out.println("您是否需要继续添加 y/n");
			char chars = input.next().charAt(0);
			if(chars == 'n') {
				break;
			}
		}while(true);

方法二: 

思路分析:
		// 1.我们先确定元素插入的位置
		int[] arr = {10, 12, 45, 90};
		int[] arr1 = new int[arr.length + 1];
		int addNum = 23;
		int index = -1; //用来确定需要插入的下标
		for ( int i = 0; i < arr.length; i++) {
			if(arr[i] > addNum ) {
				index = i;
				break; //确定以后直接退出,因为后面的数一定是比要插入的元素要大的
			}else{
				index = arr.length; //如果数组中没有大于addNum的数,则插入到数组最后
			}
		}
		// System.out.println("下标=" + index);
		//下面我们就来完成扩容
		//这里我们用两个变量来分别控制这两个数组的下标
		for ( int i = 0,j = 0;i < arr1.length; i++) {
			if(i != index) {
				arr1[i] = arr[j];
				j++;//如果不是要插入的位置,新数组跟旧数组一起走,但是如果是,就需要把这个位置空出来用来添加新元素
			}else{
				arr1[i] = addNum;
			}
		}
		arr = arr1;
		for( int i = 0; i < arr.length;i++){
			System.out.print(arr[i] + " ");
		}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值