在保持Lexicographical顺序的同时将新String对象引入字符串数组的方法

时间:2013-04-29 02:43:57

标签: java arrays string methods

附注:

我想通过Array类而不是ArrayList执行此操作。

您可以假设String数组中的字符串已按正确的字典顺序排列(按字母顺序排列)。

例如:

如果数组是 - > String [] list = {“Bacon”,“Cheese”,“Milk”,“Pancake”,“Yogurt”};

我想将字符串“OJ”添加到混合中,它应该是这样的:

{ “培根”, “干酪”, “牛奶”, “OJ”, “煎饼”, “酸奶”}

提前致谢!

3 个答案:

答案 0 :(得分:1)

使用java.util.Arrays.binarySearch(...)。

您必须增加阵列的大小。这听起来像是家庭作业。 TreeSet是一个更容易使用的类。

答案 1 :(得分:0)

您可以将新条目追加到数组的末尾,然后对其进行排序。

答案 2 :(得分:0)

插入排序的简单方法:

public class InsertionSort {

    public static void main(String[] args) {
        String[] list = {"Bacon", "Cheese", "Milk", "Pancake", "Yogurt", "OJ"};

        InsertionSort in = new InsertionSort();
        list = in.insertSort(list);

        for (String str : list) {
            System.out.println(str);
        }
    }

    public String[] insertSort(String[] list) {
        for (int i = 1; i < list.length; i++) {
            String val = list[i];
            int value = list[i].toLowerCase().charAt(0);
            int j = i - 1;
            while (j >= 0 && list[j].toLowerCase().charAt(0) > value) {
                list[j + 1] = list[j];
                j = j - 1;
            }
            list[j + 1] = val;
        }

        return list;
    }
}

算法取自here

public static void insertSort(int[] A){
  for(int i = 1; i < A.length; i++){
    int value = A[i];
    int j = i - 1;
    while(j >= 0 && A[j] > value){
      A[j + 1] = A[j];
      j = j - 1;
    }
    A[j + 1] = value;
  }
}