Линейный сортированный поиск
Я создал этот код, который является позицией диаграммы. Это должно позволить пользователю ввести имя, уже установленное в массиве, и позиция артиста будет выводиться, пока ввод не является "концом".
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;
}