PDA

View Full Version : سوال: جستجو دودویی



محمدامین شریفی
دوشنبه 05 اسفند 1387, 13:59 عصر
دوستان یک دیتاگرید ویو دارم،میخواهم رکوردها را با هم مقایسه کنم.اگر تکراری بود آنها را پاک کنم.البته برای تشخیص تکراری بودن دو تا رکورد، یکسری عملیات باید انجام شود.میشود درباره این جستجو کمکم کنید.اگر فقط در الگوریتم هم میدانید، راهنماییم کنید.
ممنون

A.S.Roma
دوشنبه 05 اسفند 1387, 15:23 عصر
جستجوی دودویی در یک لیست Sort شده عنصر خاصی را پیدا می کند.
آیا به کار شما می آید !؟

الگوریتم :


int BinarySearch(type x[] , int low , int high , int y)
{
int mid = (low+high)/2;
if(x[mid] == y)
return mid;
else if(x[mid] > y)
return BinarySearch(x , low , mid-1 , y);
else
return BinarySearch(x , mid+1 , high , y);
}

محمدامین شریفی
دوشنبه 05 اسفند 1387, 16:11 عصر
جستجوی دودویی در یک لیست Sort شده عنصر خاصی را پیدا می کند.
آیا به کار شما می آید !؟

الگوریتم :


int BinarySearch(type x[] , int low , int high , int y)
{
int mid = (low+high)/2;
if(x[mid] == y)
return mid;
else if(x[mid] > y)
return BinarySearch(x , low , mid-1 , y);
else
return BinarySearch(x , mid+1 , high , y);
}


انگار که نه،چون لیست من مرتب شده نیست.
من میخواهم یک ردیف را با ردیف های دیتا گرید ویو بسنجم،اگر ستون اولشان یکی بود یکسری عملیات روشون انجام بدم.در ضمن ستون هم "عدد صحیح" نیست.شما چه الگوریتمی را پیشنهاد میکنید؟
من خودم اینجوری نوشتم ولی فکر کنم اشتباه است:


for (int k = 0; k < dataGridView1.Rows.Count; k++)
{
for (int j = 0; j <= k; j++)
{
if (dataGridView1.Rows[j].Cells[0].Value == dataGridView1.Rows[k].Cells[0].Value)
{
MessageBox.Show(dataGridView1.Rows[j].Cells[0].Value.ToString());
// dataGridView1.Rows.RemoveAt(j);

}

}


}

Amir Oveisi
دوشنبه 05 اسفند 1387, 18:17 عصر
برای BinarySearch میتونین از متد Array.BinarySearch استفاده کنید.