JAVA经典50题(30)

import java.util.Scanner;
/*
 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的
数,依次后移一个位置
 */
public class InsertDigit {
	private static int[] insert(int num,int arr[])
	{
		int arrTemp[]=new int[arr.length+1];//存放插入后的序列
		if(num>=arr[arr.length-1])//比最后一个数大,插入末尾
		{
			for(int n=0;n<arr.length;n++)
			{
				arrTemp[n]=arr[n];
			}
			arrTemp[arr.length]=num;
		}
		if(num<=arr[0])//比第一个数小
		{
			for(int i=arr.length-1;i>=0;i--)
			{
				arrTemp[i+1]=arr[i];
			}
			arrTemp[0]=num;
		}
		else
		{
			for(int j=0;j<arr.length;j++)
			{
				arrTemp[j]=arr[j];
				if(arr[j]>num)
				{
					for(int k=arr.length-1;k>=j;k--)
					{
						arrTemp[k+1]=arr[k];
					}
					arrTemp[j]=num;
					break;
				}
			}
		}
		return arrTemp;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int arr[]= {1,3,5,6,8,9,12,14,20,22,30,40,80,165};
		System.out.print("输入一个数:");
		Scanner input=new Scanner(System.in);
		int num=input.nextInt();
		int arrLast[]=insert(num,arr);
		System.out.print("排序前:");
		for(int i=0;i<=arr.length-1;i++)
		{
			System.out.print(arr[i]+" ");
		}
		System.out.println();
		System.out.print("排序后:");
		for(int i=0;i<=arr.length;i++)
		{
			System.out.print(arrLast[i]+" ");
		}
		input.close();

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值