java - 选择排序递归调用

标签 java sorting recursion selection

I was studying recursion problem I was going to call it, but it shows like this

import java.util.Arrays;


public class BinarySearch {
public static int binarySearch(int [] list, int key){
    int low = 0;
    int high = list.length -1;
    return binarySearch(list, key, low ,high);
}
public static int binarySearch(int [] list, int key, int low, int high){
    if(low > high){
        return (-low -1);}
    int mid = (low + high) / 2;
    if(key < list[mid])
        return binarySearch(list, key, low, mid - 1);
    else if(key == list[mid])
        return mid;
    else
        return binarySearch(list, key, mid + 1, high);
}
public static void main (String [] args){
    int [] list = {'1', '2','4','5'};
    binarySearch(list, 4);
    System.out.println(Arrays.toString(list));

}

}

output : [49, 50, 52, 53]

我应该怎样做才能使其正确?

最佳答案

您正在整数数组中存储字符:-

int [] list = {'1', '2','4','5'};

因此,您获得的值分别是 1, 2, 4, 5 的 ASCII 代码。因此,您的 binarySearch 方法将无法找到值 4。因为,它并不完全在那里。删除您的值周围的单引号。

其次,您没有打印 binarySearch 方法的返回值:-

binarySearch(list, 4);

应该是:-

System.out.println(binarySearch(list, 4));

关于java - 选择排序递归调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13764875/

相关文章:

java - 修改 jar 中的 GWT 库的最佳方法是什么?

java - Java库中是否有内置的链表节点

MySQL 对计算进行排序

java - 如何对用户输入的字符串进行分组

java - 将 Play Framework java Promise 转换为 Play Framework Scala Promise

java - Spring AOP 记录器、切入点定义

sorting - 并行基数排序,这个实现实际上是如何工作的?有一些启发式方法吗?

delphi - 如何使用多个比较器在 TObjectList<> 中进行类似于 Excel 的按 A 排序,然后按 B 排序

c# - 递归到无穷远,还没准备好

algorithm - 如何用递归树求解 T(n) = T(n-2) + T(2) + n