Tôi đã thử mã sau đây để tìm ra phần tử tối thiểu trong một mảng được sắp xếp theo chu kỳ. Nhưng nó thất bại khi thấp = 1 và cao = 2 bởi vì giữa luôn luôn là 1 và [mid] = a [1] luôn lớn hơn [high].tìm phần tử tối thiểu trong một mảng được sắp xếp theo chu kỳ
Tôi đang cố gắng sử dụng Tìm kiếm nhị phân tại đây để tìm giải pháp.
//finding the minim element in the cyclic sorted array
int arrC[]={10,13,1,3,4,5,8};
int low=0,high =6;
int mid=0,reset =1;
while (low < high)
{
mid = (low+ high)/2;
if (arrC[mid]>arrC[high])
{
low = mid;
}
else if (arrC[mid] < arrC[high])
{
high = mid;
}
}
printf("minimum element is %d",arrC[mid+1]);
Bạn có nghĩa là mảng được xoay không? – aaronman
Có @ aaronman.It là một mảng được sắp xếp xoay. – krrishna
Bạn in 'arrC [mid + 1]' nhưng giá trị trung bình tối thiểu của bạn là 0 ... mã của bạn sẽ thất bại trong trường hợp đơn giản nhất mà phần tử đầu tiên là tối thiểu, kể cả khi mảng có một phần tử duy nhất. –