gpt4 book ai didi

java - 插入排序与二进制搜索?

转载 作者:行者123 更新时间:2023-11-29 05:18:03 24 4
gpt4 key购买 nike

我找不到我的插入排序有什么问题。我需要在我的排序中实现二进制搜索,但它不起作用。

public  void insertionSort(String[] data){
for (int i=1; i<data.length; i++){
String item = data[i];
int move = binarySearch(data, item, 0, i - 1);
for (int j = i; j < move; j++){
data[j] = data[j-1];
}
data[move]= item;
}
}

public int binarySearch(String[] data, String item, int low, int high) {
int mid;
while(low<=high){
mid=(low+high)/2;
if(item.compareTo(data[mid]) > 0)
low=mid+1;
else if(item.compareTo(data[mid]) < 0)
high=mid-1;
else
return mid;
}
return low;
}

最佳答案

你的插入循环是错误的。因为 move 将始终介于 0 和 i(含)之间,循环将从 j >= move 开始,因此您需要递减 j,而不是增加它:

for (int j = i; j > move; j--){
data[j] = data[j-1];
}

关于java - 插入排序与二进制搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com