hosseinz501 122 ارسال شده در 31 اردیبهشت، ۱۳۹۵ اشتراک گذاری ارسال شده در 31 اردیبهشت، ۱۳۹۵ سلام دوستان با استفاده از تابع 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 ریخته شده اند و مرتب سازی شده اند . ببخشید اگه بد توضیح دادم لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
SoRoUsH 300 ارسال شده در 31 اردیبهشت، ۱۳۹۵ اشتراک گذاری ارسال شده در 31 اردیبهشت، ۱۳۹۵ عالی بود! ممنون لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
Nemesis 1,846 ارسال شده در 1 خرداد، ۱۳۹۵ اشتراک گذاری ارسال شده در 1 خرداد، ۱۳۹۵ آفرین دونستن این الگوریتم خوبه بهتره درک بشه حلقه های تو در تو ولی یه کار ساده هست که با دستورات کمتر انجام میشه 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) => از بزرگ به کوچک موفق باشی لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.