Java-在一组有序数组中进行查找指定数及对应下标,再插入指定数,最后删除指定数。

在一组有序数组中进行查找指定数及对应下标,再插入指定数,最后删除指定数。
代码如下:

package com.homework.lhh;

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

public class Ex09 {
    @SuppressWarnings("resource")
    public static void main(String[] args) {
        int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };// 定义一个排序数组
        int findIndex = -1;// 指定数在数组中的位置
        int start = 0;// 起点索引
        int end = array.length - 1;// 终点的索引
        int middle;// 中心点的索引(此处可以暂时不计算,在循环中计算赋值)
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        // 查找
        System.out.println();
        System.out.print("请输入一个指定查找的数:");
        Scanner sc = new Scanner(System.in);
        int findNumber = sc.nextInt();
        while (start <= end) {
            middle = (start + end) / 2;
            if (findNumber > array[middle]) {
                start = middle + 1;
            } else if (findNumber < array[middle]) {
                end = middle - 1;
            } else {
                findIndex = middle;// 找到指定数
                break;
            }
        }
        if (findIndex == -1) {
            System.out.println(findNumber + " 不存在该数组中!");
        } else {
            // 找到
            System.out.println(findNumber + " 在数组中,它的下标为 :" + findIndex);
        }

        // 插入指定数
        System.out.print("请输入一个指定插入的数:");
        int addNumber = sc.nextInt();
        array = Arrays.copyOf(array, array.length + 1);// 数组扩容
        array[array.length - 1] = addNumber; // 暂时将数组的最后一个数赋值为插入的数
        Arrays.sort(array);// 再次排序
        System.out.print("插入一个指定数之后的数组为:");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }

        // 删除
        System.out.println();
        System.out.print("请输入一个指定删除的数:");
        int delNumber = sc.nextInt();
        // int newLength = 0; //定义新的长度
        for (int i = 0; i < array.length; i++) {
            if (array[i] == delNumber) {
                // 重新定义数组的下标
                for (int j = i; j < array.length - 1; j++) {
                    array[i] = array[j + 1];
                }
                array = Arrays.copyOf(array, array.length - 1);// 数组减容量
                // newLength++;
            }
        }
        Arrays.sort(array);
        System.out.print("删除一个指定删除的数后数组为:");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
    }
}

运行结果如图:
这里写图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值