zoukankan      html  css  js  c++  java
  • 在排序好的数组插入一个数字,数字要插入到合适的位置上

        

    近期在看曾经大一看过的一本书《JAVA开发实战经典》李兴华写的。每看一次曾经看过的书,收获都是不一样的,非常多东西曾经不明确,如今一看恍然大悟的感觉;

     

    这道题目是书上的习题,没给參考答案,我在网上也没找到好点的,就发上来。感觉这个算法还能够优化得更好。希望高手指点

     

           // 在排序好的数组插入一个数字,数字要插入到合适的位置上

           int intArr[] = { 11, 22,33, 44, 55, 66, 77};

           int insertNum = 34;

           //找到要插入的位置

           int insertIndex=0;

           for (int i = 0; i < intArr.length; i++) {

               if(insertNum<intArr[i]){

                  insertIndex=i;

                  break;

               }

           }

           //insertNum放入要插入的位置,然后后面每一个都向后移动一位角标

           int intArr1[] =new int[intArr.length+1];

           for (int i = 0; i < intArr1.length; i++) {

               if(i>=insertIndex){

                  if(i==insertIndex)//这个仅仅做一次

                  intArr1[i]=insertNum;

                 

                  if(i+1<intArr1.length)//i+1会越界。加推断

                  intArr1[i+1]=intArr[i];

               }else{

                  //插入之前运行,開始运行插入以后就不运行

                  intArr1[i]=intArr[i];

               }

           }

           //循环输出

           for (int i : intArr1) {

               System.out.print(i+" ");

           }


    今天不小心翻看了下。事实上能够用集合做: 可是这道题主要是要练习数组的操作

    		//用集合做
    		System.out.println();
    		Insert(intArr, insertNum);
    	}
    
    	private void Insert(int[] intArr, int insertNum) {
    		//将数组转成集合
    		List<Integer> list = new ArrayList<Integer>();
    		for (int i : intArr) {
    			list.add(i);
    		}
    		list.add(insertNum);//加入元素
    		Collections.sort(list); //排序集合
    		System.out.println(list); 
    	}


     

  • 相关阅读:
    JavaScript函数式编程——柯里化
    JavaScript使用纯函数避免bug
    ES6入门五:箭头函数、函数与ES6新语法
    图解--二分查找树
    电梯引发的思考
    VIM
    vs 2017
    多线程系列(四):Task
    多线程系列(三):线程池基础
    Docker for windows : 安装Redis
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6753760.html
Copyright © 2011-2022 走看看