رفتن به مطلب

سورس مرتب کردن اعداد از بزرگ به کوچک


hosseinz501

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

سلام دوستان 

با استفاده از تابع  OrgonizeInts که در ادامه نوشتم میتونین اعدادی رو در قالب آرایه به تابع تحویل بدین و اعداد رو مرتب شده از کوچک به بزرگ تحویل بگیرید تا اونجایی که تونستم سعی کردم الگوریتم مرتب سازی ، بهینه باشه .

Sub Process
	Private ints() As Int
	ints = Array As Int(2,3,1,5,0,6)
	Private Resultints() As Int
	Resultints = OrgonizeInts(ints)
	For j = Resultints.Length-1 To 0 Step -1 'نمایش اعداد از بزرگ به کوچک
		Log(""&Resultints(j))
	Next
	For j1 = 0 To Resultints.Length-1 'نمایش اعداد از کوچک به بزرگ
		Log(""&Resultints(j1))
	Next
End Sub
Sub OrgonizeInts(ints() As Int) As Int()
	Private Resultints(ints.Length) As Int
	Private Count As Int
	For i = 0 To ints.Length-1
		Count = 0
		For i1 = 0 To ints.Length-1
			If ints(i) > ints(i1) Then
				Count = Count + 1
			End If
		Next
		Resultints(Count) = ints(i)
	Next
	Return Resultints
End Sub

توضیح الگوریتم تابع  OrgonizeInts :

ما در ابتدا به طول آرایه اعداد ورودی (متغیر ints)  ، یک آرایه عددی جدید به نام Resultints تعریف می کنیم تا اعداد مرتب شده از کوچک به بزرگ رو داخل اون بریزیم .

 

حالا به زبان ساده کاری که ما باید بکنیم اینه که هر کدام از اعداد متغیر ints رو با دیگر اعداد موجود در این آرایه مقایسه کنیم تا اعداد رو از کوچک به بزرگ بتونیم مرتب کنیم .

 

در مرحله بعد ما میایم و در حلقه اول یک عدد از اعداد ورودی خود (متغیر ints ) رو می گیریم و در حلقه دوم با دیگر اعداد  ورودی از نظر بزرگی  مقایسه می کنیم و به ازای هر عددی که عدد حلقه ی اول ما از آن بزرگتر بود مقدار یکی به مقدار متغیر Count خود اضافه می کنیم .

حال پس از اتمام حلقه ی دوم ، ما باید بیایم و عدد ورودی از حلقه اول رو  در یکی از  مکان های آرایه  Resultints بریزیم  برای مشخص کردن این مکان در آرایه Resultints  باید از متغیر Count استفاده کنیم 

  مقدار متغیر Count به ما نشان می دهد که عدد ورودی از حلقه اول ، از چند عدد بزرگتر بوده است پس مشخص می شود که چند عدد کوچک قبل از این عدد وجود دارد ،پس باید عدد ورودی از حلقه اول رو  در خانه ای از آرایه Resultints  قرار دهیم ، که به تعداد اعدادی که این عدد از آنها بزرگتر بوده است قبل از آن خانه در آرایه وجود داشته باشد .

در آخر پس از اتمام حلقه اول  ، اعداد از کوچک به بزرگ در آرایه Resultints  ریخته شده اند و مرتب سازی شده اند .

 

ببخشید اگه بد توضیح دادم  :53:

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

آفرین دونستن این الگوریتم خوبه بهتره درک بشه حلقه های تو در تو ولی یه کار ساده هست که با دستورات کمتر انجام میشه

Dim lst As List
lst.Initialize
lst.AddAll(Array As Int(2,3,1,5,0,6))
lst.Sort(True)

For i = 0 To lst.Size -1
    Log(lst.Get(i))
Next

lst.Sort(True) => از کوچک به بزرگ

lst.Sort(False) => از بزرگ به کوچک

 

موفق باشی

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

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

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