递归插入排序列表

发布于 2025-01-03 13:36:02 字数 80 浏览 0 评论 0原文

假设整数已按升序排序,如何插入到已排序的数组中。有人告诉我使用二分搜索,但这只会返回元素的位置。

伪代码的一个例子是 grate。

How would you insert into a sorted array assuming the integers has been sorted into ascending order. I was told to use binary search, but that would only return the position of the element.

A example in pseudo-code would be grate.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一张白纸 2025-01-10 13:36:02
  1. 如果值相同,则使用二分搜索(如果这是一个链表,迭代可能会非常昂贵)来查找新项目所属的位置
  2. - 不执行任何操作
  3. 如果值不同,需要在此处插入,这意味着移动从这个位置到末尾的所有内容都加一(如果这是一个链表,则仅意味着在此时插入一个新节点,不必进行所有移位)
  4. 在索引处插入新项目。
  1. use a binary search (if this is a linked list, could be quite expensive iterating) to find the location where the new items belongs
  2. if the value is the same - do nothing
  3. If the value is different, need to insert here, which means moving everything back from this position to the end by one (if this is a linked list, simply means inserting a new node at this point, don't have to do all the shifting)
  4. insert the new item at the index.
撩起发的微风 2025-01-10 13:36:02

假设您使用静态数组,例如无链表

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

// 创建具有有序项目列表的数组
String[]sortedArray = new String[]{"蚂蚁", "蝙蝠", "猫", "狗"};

// 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

Assuming that you are using static array e.g. no linked list

Following is a way to do with string array you can customize as per your requirement

// Create anarray with an ordered list of items
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;
}

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文