旁注:
我想通过 Array 类而不是 ArrayList 来做到这一点。
您可以假设 String 数组中的字符串已经按照正确的字典顺序(按字母顺序列出)进行了组织。
例如:
如果数组是 -> String[] list = {"Bacon","Cheese","Milk","Pancake","Yogurt"};
我想将字符串“OJ”添加到混合中,它应该如下所示:
{“培根”、“奶酪”、“牛奶”、“OJ”、“煎饼”、“酸奶”}
提前致谢!
使用 java.util.Arrays.binarySearch(...)。
您将不得不增加数组的大小。这听起来像家庭作业。TreeSet 是一个更易于使用的类。
您可以将新条目附加到数组的末尾,然后对其进行排序。
插入排序的简单方法:
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;
}
}