以递归方式插入到排序列表中

时间:2012-02-09 10:09:57

标签: java sorting binary-search

如果整数已按升序排序,您将如何插入排序数组?有人告诉我使用二进制搜索,但这只会返回元素的位置。

伪代码中的一个例子就是。

2 个答案:

答案 0 :(得分:2)

  1. 使用二进制搜索(如果这是一个链表,可能是非常昂贵的迭代)来查找新项目所在的位置
  2. 如果值相同 - 什么都不做
  3. 如果值不同,需要在此处插入,这意味着将所有内容从此位置移回一端(如果这是一个链接列表,只是意味着此时插入一个新节点,不必做所有的转变)
  4. 在索引处插入新项目。

答案 1 :(得分:1)

假设您正在使用静态数组,例如没有链接列表

以下是一种使用字符串数组的方法,您可以根据自己的要求进行自定义

//使用有序的项目列表创建阵列 String [] sortedArray = new String [] {“ant”,“bat”,“cat”,“dog”};

// Search for a non-existent item and then insert it
int index = Arrays.binarySearch(sortedArray, "cow");
if (index < 0) {
    // Compute the insert index
    int insertIndex = -index-1;

    // Insert the new item into sortedArray. The example here creates
    // a new larger array to hold the new item.
    String[] newSortedArray = new String[sortedArray.length+1];
    System.arraycopy(sortedArray, 0, newSortedArray, 0, insertIndex);
    System.arraycopy(sortedArray, insertIndex,
                     newSortedArray, insertIndex+1,
                     sortedArray.length-insertIndex);
    newSortedArray[insertIndex] = "cow";
    sortedArray = newSortedArray;
}

参考http://www.exampledepot.com/egs/java.util/coll_InsertInArray.html