PDA

View Full Version : مرتب سازی آرایه یک بعدی



Behnam mohammadi
پنج شنبه 30 اردیبهشت 1389, 17:36 عصر
سلام من برنامه زیر نوشتم ولی درست مرتب نمی کنی یه نفر اینو باگ گیری کنه
ممنون


Dim a(100) As String
Private Sub Command1_Click()
b = nputBox ("Tedade array ra vared konid")
For i = 1 To b
a(i) = InputBox("Insert Number")
Next i
For i = 1 To b
For j = 1 To b
If a(i) >= a(j) Then
temp = a(i)
a(i) = a(j)
a(j) = temp
End If
Next j
Next i
For i = 1 To b
Print a(i)
Next i
End Sub

m_test
پنج شنبه 30 اردیبهشت 1389, 22:35 عصر
ایجاد و Sort ارایه (http://4linecode.mihanblog.com/post/733)

FinalMOB
جمعه 31 اردیبهشت 1389, 15:39 عصر
سلام من برنامه زیر نوشتم ولی درست مرتب نمی کنی یه نفر اینو باگ گیری کنه
ممنون


Dim a(100) As String
Private Sub Command1_Click()
b = nputBox ("Tedade array ra vared konid")
For i = 1 To b
a(i) = InputBox("Insert Number")
Next i
For i = 1 To b
For j = 1 To b
If a(i) >= a(j) Then
temp = a(i)
a(i) = a(j)
a(j) = temp
End If
Next j
Next i
For i = 1 To b
Print a(i)
Next i
End Sub


با سلام خدمت شما دوست عزیز
سورس جالبی بود :لبخند:
تا حالا اینجوری سرکار نرفته بودم :لبخند: حدود 5-6 بار تستش کردم دیدم هیچ مشکلی از نظر سورس نداره ولی جواب نمیده :لبخند:
تنها مشکلی که داره اینه که شما متغیر اصلی یعنی a رو از نوع String تعریف کردی و وقتی می خواد مقایسش کنه، از نظر رشته ای مقایسه می کنه و تعداد کاراکتر ها واسش مهمتر میشه
در حالی که فقط کافیه خط اول کد رو تغییر بدی اینجوری

Dim a(100) As Integer

مشکل حل میشه:لبخند::بامزه:
البته این سورس چند تا اشکال جزئی داره که لطمه ای به جواب برنامه نمی زنه، مثلا تعداد مقایسه هایی که این برنامه می کنه از حد معمول بیشتره ولی خوب مهم نیست :چشمک:

موفق باشید.

mohsensaghafi
شنبه 01 خرداد 1389, 08:11 صبح
سلام دوستان عزیز
برنامه یه مشکل منطقی هم داره.
در جایی که دارید دو خونه آرایه رو مقایسه می کنید، باید دو خونه پشت سر هم در آرایه رو مقایسه کنید.
به این صورت:

for i =0 to b
for j=0 to b-1
if a(j)>a(j+1)
// Swap
و همونطور که دوست دیگرمون گفتن به این همه مقایسه نیازی نیست. می توان آن را کاهش داد.
این الگوریتم مرتب سازی بابل سرت است. برای اطلاعات بیشتر سرچ کنید.
یا علی!