Java实现产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。...

    public  static void main(String[] args){
        //创建一个int数组,长度为100,
        int n = 100;
        int[] arrayInt = new int[n];
        Random random = new Random();
        ArrayList myList = new ArrayList();
        while(myList.size() < 100){
            //随机函数生成0-100的整数
            int num = random.nextInt(101);
            //myList不包含则添加元素 去重
            if(!myList.contains(num) && num >0){
                myList.add(num);
            }
        }
        myList.sort(null);
        System.out.println(myList.size() + ",");
        //myList数组值赋值给int数组
        for(int i=0;i<100;i++){
            arrayInt[i] = (int)myList.get(i);
            System.out.println(arrayInt[i] + ",");
        }
    }

 大家可以用Integer数组试试,代码要少点:

//    ArrayList<Integer> myList = new ArrayList<Integer>();
//    Integer[] b = new Integer[myList.size()];//当泛型为Integer时,需要
//    arrayInt = (Integer[])myList.toArray(b);

 

转载于:https://www.cnblogs.com/liuxiutianxia/p/9581476.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是Java代码实现: ```java import java.util.Random; public class BST { private Node root; private class Node { int val; Node left, right; Node(int val) { this.val = val; } } public void insert(int val) { root = insert(root, val); } private Node insert(Node node, int val) { if (node == null) { return new Node(val); } if (val < node.val) { node.left = insert(node.left, val); } else if (val > node.val) { node.right = insert(node.right, val); } return node; } public void delete(int val) { root = delete(root, val); } private Node delete(Node node, int val) { if (node == null) { return null; } if (val < node.val) { node.left = delete(node.left, val); } else if (val > node.val) { node.right = delete(node.right, val); } else { if (node.left == null && node.right == null) { node = null; } else if (node.left == null) { node = node.right; } else if (node.right == null) { node = node.left; } else { Node successor = findMin(node.right); node.val = successor.val; node.right = delete(node.right, successor.val); } } return node; } public boolean search(int val) { return search(root, val); } private boolean search(Node node, int val) { if (node == null) { return false; } if (node.val == val) { return true; } else if (val < node.val) { return search(node.left, val); } else { return search(node.right, val); } } public void update(int oldVal, int newVal) { delete(oldVal); insert(newVal); } public int successor(int val) { Node node = find(root, val); if (node == null) { return -1; } if (node.right != null) { return findMin(node.right).val; } else { Node successor = null; Node curr = root; while (curr != node) { if (node.val < curr.val) { successor = curr; curr = curr.left; } else { curr = curr.right; } } return successor == null ? -1 : successor.val; } } private Node find(Node node, int val) { if (node == null) { return null; } if (node.val == val) { return node; } else if (val < node.val) { return find(node.left, val); } else { return find(node.right, val); } } private Node findMin(Node node) { while (node.left != null) { node = node.left; } return node; } public static void main(String[] args) { BST bst = new BST(); Random rand = new Random(); int[] arr = new int[10]; System.out.print("原数组: "); for (int i = 0; i < 10; i++) { arr[i] = rand.nextInt(100); System.out.print(arr[i] + " "); bst.insert(arr[i]); } System.out.println(); System.out.println("插入后的BST: "); System.out.println(bst); int idx = rand.nextInt(10); int val = rand.nextInt(100); System.out.println("将第" + idx + "个数 " + arr[idx] + " 修改为 " + val); bst.update(arr[idx], val); arr[idx] = val; System.out.println(bst); idx = rand.nextInt(10); System.out.println("删除第" + idx + "个数 " + arr[idx]); bst.delete(arr[idx]); arr[idx] = -1; System.out.println(bst); idx = rand.nextInt(10); System.out.println("查找第" + idx + "个数 " + arr[idx] + " 是否存在: " + bst.search(arr[idx])); idx = rand.nextInt(10); int successor = bst.successor(arr[idx]); System.out.println("第" + idx + "个数 " + arr[idx] + " 的后继: " + successor); } @Override public String toString() { StringBuilder sb = new StringBuilder(); inOrder(root, sb); return sb.toString(); } private void inOrder(Node node, StringBuilder sb) { if (node == null) { return; } inOrder(node.left, sb); sb.append(node.val).append(" "); inOrder(node.right, sb); } } ``` 在 `main` 函数中,先生成一个长度为 10 的随机数组,并用 `insert` 方法将其中的数插入到 BST 中。然后,随机选取一个数,用 `update` 方法将其修改,再随机选取一个数,用 `delete` 方法将其删除。接着,随机选取一个数,用 `search` 方法查找其是否存在,最后随机选取一个数,用 `successor` 方法寻找其后继。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值