Em chào mọi người ạ, em có làm bài tìm kiếm nhị phân với 2 style là dùng đệ quy vs k dùng đệ quy, em k hiểu sao logic em cũng khá hợp lí và em có hỏi bạn thì nó bảo đúng, vậy mà lúc chạy lại sai hết cả hai
Mong mn giúp em vs ạ, e cảm ơn nhiều
Bài này e làm từ tuần trc, lúc đó debug thì OK, nhưng k hiểu sao mới cài thêm GCC thì lên chạy bật lại thì nó lại xảy ra lỗi ;(((
(Hình 1: Tìm kiếm dùng đệ quy)
(Hình 2: Không dùng đệ quy - k cho up thêm ảnh nên e mạn phép cop code sang)
int BinarySearch(int* a, int n, int key)
{
if (!isAscending(a, n))
{
AscendingArr(a, n);
}
/*PrintArray(a, n);*/
//bineary search not using recursion
int left, right, middle, flag = 0;
left = 0;
right = n - 1;
while (left <= right) {
//tai sao k dung middle =(left + right)/2
middle = (left + (right- left)) / 2;
if (key == a[middle])
{
flag = 1;
return middle;
}
//neu nhu key nho hon value cua a[middle], tuc la no nam ben phai
else if (key < a[middle]) {
right = middle - 1;
}
//neu nhu key lon hon value cua a[middle], tuc la no nam ben trai
else {
left = middle + 1;
}
}
if (flag == 0)
{
return -1;
}
}

highlight bằng cách nào thì không thành vấn đề.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?