Я забыл вставить свой код, извините за меня.
У меня в программе идет бинарный поиск, но когда я вношу 10 записей учеников в массив и сортирую их, последний элементИдентификатор студента не будет получен из моего бинарного поиска.
Скажите, когда я сортирую Массив, а 232 был последним элементом в Массиве, когда я перехожу на Поиск 232, функция бинарного поиска возвращает меня не найденнымЯ ищу любой другой идентификатор в массиве и возвращаю его вместе с записями.
else if ( choice == 4) // Binary Search... This Also Force Array to be Sorted If Array is not Sorted.
{
merge_sort(0,N_STUDENT-1);
cout<<" \n\t Enter the student number to search :"; // Ask user to Input Student ID.
cin>>key;
k=binarySearch(record, 0, N_STUDENT-1, key); // Serach Array
if(k>=0)
cout<<"Student Details with student Number\n " <<key<< "exists at the position \n" << k
<< " Student Number\n" << record->student_number << " " << " Student Name \n" << record->studentname << " " << " Student Address \n" << record->Address << " " << " Course Code \n" << record->CourseCode << " " << " Course Name \n" << record->CourseName; //Displays Position of Student And Student Details.
else
cout<< "Not found "; // if Record is not Found
_____________________________________________________________________________________________________
//function binary search using the key value to serach
int binarySearch(student sorted[], int first, int upto, int key) { // Sort Array if not Sorted...
while (first < upto) {
int mid = (first + upto) / 2; // Compute mid point.
if (key<sorted[mid].student_number)
{
upto = mid; // repeat search in bottom half.
} else if (key>sorted[mid].student_number)
{
first = mid + 1; // Repeat search in top half.
} else
{
return mid; // Found it. return position
}
}
return -(first + 1); // Failed to find key
}