循環ソート配列の最小要素を見つけるために、次のコードを試してみました。しかし、中間が常に1でa [mid] = a [1]が常にa [high]より大きいため、low = 1とhigh = 2のときは失敗します。循環ソート配列の最小要素を見つける
解決策を見つけるためにここでバイナリ検索を使用しようとしています。
//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]);
回転配列ですか? – aaronman
はい@アロンマン。回転ソートされた配列です。 – krrishna
あなたは 'arrC [mid + 1]'を出力しますが、最小値は0です。配列が単一の要素を持つ場合を含め、最初の要素が最小である最も簡単なケースでコードが失敗します。 –