21-01-2007, 21:31
|
|
|
חבר מתאריך: 10.01.07
הודעות: 15
|
|
שאלה בסיסית בC#
שלום,
ניסיתי לחפש מספר במערך באמצעות חיפוש בינארי. לא מופיעות לי שגיאות הידור אך המספר לא נמצא.
ניסיתי לפתור כך:
Console.WriteLine("enter a number");
int num = int.Parse(Console.ReadLine());
int[] arr = new int[5] { 3, 67, 4, 4, 17 };
printarr(arr);
Console.WriteLine("****");
bubbles(arr);
printarr(arr);
findarr(arr, num);
}
static void bubbles(int[] arr)
{
int temp = 0;
for (int i = 1; i < arr.Length; i++)
{
for (int j = 0; j < arr.Length - i; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return;
}
static void printarr(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
}
return;
}
static void findarr(int[] arr, int num)
{
int div = 0, j = 0, count = 0, index = 0, i = arr.Length - 1;
while (j > i)
{
div = (j + i) / 2;
if (num == arr[div])
{
count++;
index = div;
}
else if (num > arr[div])
{
j = div;
}
else
{
i = div;
}
}
if (num == arr[div])
{
Console.WriteLine("the num {0} appears in index {1} {2} times", num, div, count);
}
else
{
Console.WriteLine("not found");
}
אשמח אם תעזרו לי לפתור את התרגיל , תודה
דבר נוסף, איך אבדוק כהמ פעמים המספר מופיע?
|