0

旁注:

我想通过 Array 类而不是 ArrayList 来做到这一点。

您可以假设 String 数组中的字符串已经按照正确的字典顺序(按字母顺序列出)进行了组织。

例如:

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

我想将字符串“OJ”添加到混合中,它应该如下所示:

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

提前致谢!

4

3 回答 3

1

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

您将不得不增加数组的大小。这听起来像家庭作业。TreeSet 是一个更易于使用的类。

于 2013-04-29T02:47:32.880 回答
0

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

于 2013-04-29T02:49:51.920 回答
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;
    }
}

算法取自这里

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;
  }
}
于 2013-04-29T03:32:16.070 回答