zoukankan      html  css  js  c++  java
  • Java列表_插入算法

    作业目的:将一个老列表排序后,拷贝到一个新列表中,再往新列表中插入一个数

     此处,新列表的最后一位数默认为0

     

     目的是求出插入元素的索引位

     此处,出现了两个55,并没有插入的原素

    这样就好了,下面是源码:

    package com.jh.test6;

    import java.util.Arrays;
    import java.util.Scanner;

    public class jh_25_列表排序 {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int[] arr = {11, 22, 44, 23, 55, 6, 4, 7};
    // 自动排序
    Arrays.sort(arr);
    // 创建新列表,长度加一
    int[] newArr = new int[arr.length+1];
    // 拷贝新列表,给新列表赋值
    for (int i = 0; i < arr.length; i++) {
    newArr[i] = arr[i];
    }
    // 打印输入新列表
    for (int i = 0; i < newArr.length; i++) {
    System.out.print(newArr[i]+" ");
    }
    System.out.println(" 请输入你要插入的元素:");
    // 4 6 7 11 22 23 44 55 0
    int num = scanner.nextInt();
    // 默认索引为新列表的最后一个位置,
    // 因为如果插入的数字比列表中的任何一个数都大,那么它的索引为是在最后一个位置
    int index = newArr.length-1;
    for (int i = 0; i < newArr.length; i++) {
    if (num<newArr[i]){
    index = i;
    break;
    }
    }
    System.out.println(index);
    // 插入算法,将插入位置后的元素后移一位
    // 4 6 7 11 22 23 44 55 0
    // 要想后移,肯定是从后面遍历,并且是从倒数第二位,因为倒数第一位没法往后移了
    // newArr[newArr.length-1] ----> 倒数第一位的位置(0的位置)
    // newArr[newArr.length-1-1] ----> 倒数第二位的位置(55的位置)
    for (int i = newArr.length-2; i >=index ; i--) {
    // newArr[newArr.length-1] = newArr[newArr.length-1-1];
    newArr[i+1] = newArr[i];
    }
    for (int i = 0; i < newArr.length; i++) {
    System.out.print(newArr[i]+" ");
    }
    // 将增加的学员成绩插入到该列表中
    newArr[index]=num;
    System.out.println();
    for (int i = 0; i < newArr.length; i++) {
    System.out.print(newArr[i]+" ");
    }
    }
    }
  • 相关阅读:
    XML 读取器和编写器从URL读取XML
    8月8号 星期五
    080808 晴
    080805
    雨景
    用photoshop批量修改照片(待修改)
    8月7日 晴
    五不
    Android 画渐变的背景
    iOS开发的一些基础知识
  • 原文地址:https://www.cnblogs.com/LEPENGYANG/p/14973037.html
Copyright © 2011-2022 走看看