Линейный сортированный поиск

Я создал этот код, который является позицией диаграммы. Это должно позволить пользователю ввести имя, уже установленное в массиве, и позиция артиста будет выводиться, пока ввод не является "концом".

public static void main(String[] args) {
    Scanner kybd = new Scanner (System.in);
    String names = null;

    String [] Artists = new String [];
    String [] Artists = new String []{"Fetty Wap", "Drake", "Miley Cyrus"
    ,"Kanye West","Chris Browna","Tinie Tempah","Robin Thicke","The Weeknd"
    ,"Jay Z","The Wanted"};

    do{
        System.out.println("Please enter name ");
        names = kybd.next();
    } while (!names.equalsIgnoreCase("end")) ;
}

public static int linearSorted(int[] array, int item)
{
    int index = 0;
    while (index < array.length &&
    array[index] != item &&
    array[index] < item)
    {
        index++;
    }

    if (index == array.length ||
    array[index] > item)
    {
        index = -1;
    }
    return index;
}
} 

Проблема, к которой я пришел, состоит в том, что она не показывает положение диаграммы, поскольку она сортируется в массиве.

1 ответ

Если все, что вам нужно сделать, это линейный поиск, чтобы найти индекс имени, то это должно работать

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String name = null;
    String [] Artists = new String []{"Fetty Wap", "Drake", "Miley Cyrus"
            ,"Kanye West","Chris Browna","Tinie Tempah","Robin Thicke","The Weekend"
            ,"Jay Z","The Wanted"};

            do{
                System.out.print("Please enter name: ");
                name = sc.nextLine();
                System.out.println(linearSearch(Artists, name));
            } while (!name.equalsIgnoreCase("end")) ;

}

public static int linearSearch(String[] arr, String name){
    for(int i = 0; i < arr.length; i++){
        if(arr[i].equals(name)){
            return i;
        }
    }
    return -1;
}
Другие вопросы по тегам