رفتن به مطلب
  • 0

Mahdi-HrH

سوال

من میخوام الگوریتم جسجتجوی دودویی رو با آندروید درست کنم

الگوریتمشو تو نت پیدا کردم ولی خب یجوری بود نشد نوشت

کد سی شارپ پیدا کردم خلاصه خط به خط تبدیلش کردم به کد b4a کار میکنه ولی بگیر نگیر داره یبار پیدا میکنه یبار پیدا نمی کنه اگه مثلا ادد نزدیک وسط ارایه باشه اصلا نمیفهمه

Dim num As Int = 2
Dim midd As Int 
Dim arr() As Int
Dim  length As Int
Dim Minn As Int
Dim low As Int = 0
Dim high As Int = data.length - 1
	  
  Do While (low <= high)  
       
        midd = ( low + high ) / 2          
        If  num < data(midd) Then  
            high = midd - 1
			 Msgbox("chap","!!")
        Else
			 If num > data(midd) Then  
            low = midd +1
			 Msgbox("rast","!!")
        Else
			 Return midd  
			 Msgbox("vasat","!!")
	 End If   
	 End If  
	                
    Loop
	
    Msgbox("no","!!")       
لینک ارسال
به اشتراک گذاری در سایت های دیگر

3 پاسخ به این سوال تاکنون داده شده است

ارسال های توصیه شده

این فک کنم 3 یا 4رومین سوال منه که بی جواب موند
حداقل این یکیو جواب بدین :'(

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

این موارد رو ما بیشتر جزوه وار و روی کاغذ کار کردیم تا عمل و در محیط برنامه نویسی.

خب شما به این شکل الگوریتم رو تعریف کنید و تست کنید :

Sub BST(arr() As Int,x As Int,low As Int,high As Int)

If (high < low) Then
 Dim mid As Int = low + ((high - low) / 2)
 If( arr(mid) > x ) Then
   Return BST(arr,x,low,mid - 1)
 Else If ( arr(mid) < x ) Then
   Return BST(arr,x,mid + 1,high)
 Else
  Return mid
 End If 
End If

End Sub
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

سلام

این موارد رو ما بیشتر جزوه وار و روی کاغذ کار کردیم تا عمل و در محیط برنامه نویسی.

خب شما به این شکل الگوریتم رو تعریف کنید و تست کنید :

Sub BST(arr() As Int,x As Int,low As Int,high As Int)

If (high < low) Then
 Dim mid As Int = low + ((high - low) / 2)
 If( arr(mid) > x ) Then
   Return BST(arr,x,low,mid - 1)
 Else If ( arr(mid) < x ) Then
   Return BST(arr,x,mid + 1,high)
 Else
  Return mid
 End If 
End If

End Sub

از این چطور باید استفاده کرد ؟

من اینو تو یه دکمه نوشتم 

BST(data,2,0,data.Length-1)

ولی شرط اول تابع عمل کرد یعنی این

If (high < low) Then

توش حلقه لازم نداره ؟

یا من دارم ازش بد استفاده میکنم اجرای خاصی داره ؟چطور باید از این کد اجرا بگیرم!؟

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...