java 1、給定一個 list,插入新元素的同時保持它是從小到大有序的,請考慮程序效率。 示例: 依次插入 6、4、3 後,list 的順序是 3、4、6 依次再插入 2、8 後,list 的順序

問題:
在這裏插入圖片描述

package interview;

import java.util.LinkedList;
import java.util.List;

public class Solution {
    private static List<Integer> dataList = new LinkedList<>();
    public static void main (String[] args) {
        add(3);
        add(1);
        add(0);
        add(100);
        add(5);
        add(0);
        System.out.println(dataList);
    }

    public static void add (Integer data) {
        if (dataList == null) {
            dataList.add(data);
        }
        else {
            int high = dataList.size() - 1;
            int low = 0;
            int mid = 0;
            while (low <= high) {
                mid = (low + high) / 2;
                if (dataList.get(mid) > data) {
                    high = mid - 1;
                }
                if (dataList.get(mid) <= data) {
                    low = mid + 1;
                }

            }

            dataList.add(high + 1, data);
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章