A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© miqideliwu 中级黑马   /  2016-7-28 00:12  /  331 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
    在排序好的数组中添加一个数字, 将添加后的数字插入到数组合适的位置.
    (可以充分利用已经排序好这一条件,即可以比较大小)
*/
import java.util.Scanner;                                                    //导包
class ExtracurricularWork3 {
    public static void main(String[] args) {
        //System.out.println("Hello World!");
        int[] arr = {5,10,20,40,42,100,500};
        Scanner sc = new Scanner(System.in);                                //创建对象
        System.out.println("请输入待放入数值:");
        int a = sc.nextInt();                                                //将键入的值存入到a中
        int index = getLowIndex(arr,a);
        System.out.println(index);
        printArray(arr);                                                    //插入前的数组
        int[] arr1 = insertArray(arr,index,a);
        printArray(arr1);                                                    //插入后的数组
    }
    /*
    数组元素与输入数值进行比较,返回比其小的元素的索引
    返回值类型 int
    参数列表 int[] arr, int a;
    */
    public static int getLowIndex(int[] arr,int a) {
        int index = 0;
        for (int i = 0;i < arr.length ;i++ ){
            if (a < arr[i]){
                index = i;
                break;
            }
        }
        return index;
    }
    /*
    将数值插入数组相应位置
    返回值类型 int[];
    参数列表 int[] arr,int a;
    */
    public static int[] insertArray(int[] arr,int a,int b) {
        int[] arr1 = new int[arr.length+1];
        for (int i = 0;i < arr.length ;i++ ){
            arr1[i] = arr[i];   
        }
        //int temp = arr1[0];
        arr1[arr1.length -1] = b;
        for (int i = 1;i < arr1.length ;i++ ){
            /*
            if (a <= i){
                temp = arr1[i];                                                //前一个值保存
                arr1[i] = b;
                //arr1 = moveArray(arr1,a,temp);
                break;
            }
            */
            for (int j = 0; j <arr1.length;j++ ){
                if (arr1[i] < arr1[j]){
                    int temp = arr1[i];
                    arr1[i] = arr1[j];
                    arr1[j] = temp;
                }
            }
        }
        
        return arr1;
    }
    /*
    将数组中元素在规定位置向后移动一个位置
    返回值类型 int[]
    参数列表 int[] arr, int i, int j;
    */
    /*
    public static int[] moveArray(int[] arr,int i,int t) {
        //int temp = arr[i];
        //arr[++i] = arr[i];
        //arr[j] = temp;1
        
        
        //int temp = arr[j];
        arr[i+1] = t;
        for (int j = i+2;j < arr.length ;j++){
            //arr1 = swapArray(arr1,j,++j);
            //int temp = arr[j];   
            //把后一个数保存起来
            int temp = exchangeArray(arr,++j);
            //arr[j+1] = arr[j];
        }
        
        return arr;
    }
    */
    /*
        a[2] =a[1] temp = a[2]
        a[3] =temp temp = a[3]
        a[4] =temp temp = a[4]
        5,10,20,40,42,100,500
    */
    /*
    public static int exchangeArray(int[] arr ,int i) {
        if (i >= 0 && i < arr.length-1){
            int temp =arr[i+1];
            arr[i+1] = arr[i];
            return temp;
        }
        return -1;
        
    }
    */
    /*
    打印数组
    返回值类型 void
    参数列表 int[] arr;
    */
    public static void printArray(int[] arr) {
        for (int i = 0;i < arr.length ;i++ ){
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }

}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马