using System.IO;
using System;
class Class1
{
static void Main(string[] args)
{
int[] arr = new int[10] { 1,3,2,4,5,7,6,8,10,9};
int l = 1, r = 10, m = 0,t;
sort(arr, 10);
int i;
for (i = 0; i < 10; i++)
{
Console.Write(arr[i] + "\t");
}
Console.WriteLine("Please entert the number");
t = Convert.ToInt32(Console.ReadLine());
m = (l + r)/2;
while(l>=r)
{
if (arr[m] == t)
Console.WriteLine("value is : " + m);
if (arr[m] < t)
l = m + 1;
if (arr[m] > t)
r = m - 1;
else
Console.WriteLine("Target was found at index " + arr[m]);
}
}
static void sort(int[] dataset, int n)
{
int i, j;
for (i = 0; i < n; i++)
for (j = n - 1; j > i; j--)
if (dataset[j] < dataset[j - 1])
{
int temp = dataset[j];
dataset[j] = dataset[j - 1];
dataset[j - 1] = temp;
}
}
}
我試着運行這個程序。我輸出爲:排序數組的二進制搜索錯誤
SH-4.3 $ MCS *的.cs -out:MAIN.EXE
SH-4.3 $單MAIN.EXE
請輸入號碼
SH-4.3 $
我應該怎麼做才能二進制搜索從排序的陣列的輸出?
你知道你可以使用'Array.Sort',而不是寫你自己氣泡排序實現。 – juharr
你知道'l'永遠不會> ='r'。所以你永遠不會進入'while循環。我認爲你想'while(l <= r)' – juharr
感謝info @juharr。但我想用泡泡分類來嘗試。我的代碼中有錯誤嗎? –