java50题----30插入数组

/*
有一个已经排好序的数组。现输入一个数,要求按照原来的排序规则
将它插入到数组中。

*/

import java.util.Arrays;


class Demo
{
	private Demo(){}

	private static Demo instance = new Demo();

	

	public static Demo getInstance()
	{
		return instance;

	}

	public int[] insertArr(int[] arr, int n)
	{
		//int[] newarr = new int[arr.length+1];
		//偷懒的写法,只能处理升序数组
	/*	int[] a = Arrays.copyOf(arr, arr.length+1);
		a[a.length-1] = n;

		Arrays.sort(a);

		return a;
		*/
		
		//int ret = Arrays.binarySearch(arr, n);//二分法查找,找到n时返回插入点脚标;没找到n时就返回
		//-插入点脚标-1
		//判断ret的正负值来继续操作。

		//常规写法
		int[] newarr = new int[arr.length + 1];
		int index = 0;

		for(int i = 0; i < arr.length; i++)
		{
			if(n <= arr[i])						//从左向右升序冒泡
			{
				index = i;
				break;
			}
		}

		//循环将旧数组的值复制到新数组中
		for(int i = 0; i < index; i++)
		{
			newarr[i] = arr[i];
		}

		newarr[index] = n;

		for(int i = index+1; i < newarr.length; i++)
		{
			newarr[i] = arr[i-1];
		}


		return newarr;

	}




}

class MainClass 
{
	public static void main(String[] args) throws Exception
	{
		Demo d = Demo.getInstance();
		
		int[] arr = {100,200,300,400,500};

		int n = 900;

		System.out.println("插入前的数组元素:");
		for(int i = 0; i < arr.length; i++)
		{
			System.out.print(arr[i]+"\t");

		}

		int[] newarr = d.insertArr(arr, n);

		System.out.println("\n插入后的数组元素:");
		for(int i = 0; i < newarr.length; i++)
		{
			System.out.print(newarr[i]+"\t");
		}

	
	}
}


/*




*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值