ကွန်ပျူတာများ, ပရိုဂရမ်းမင်း
Sorting "ပူဖောင်း": programming ကိုအတွက် sorting နည်းစနစ်
ပူဖောင်းမျိုးသာထိုမှတပါး, ကစည်းရုံးဖို့အနှေးဆုံးနည်းလမ်းတွေများ၏စာရင်းပိတ်, အမြန်ဆုံးနည်းလမ်းဖြစ်စဉ်းစားခြင်းမရှိပါ။ သို့သော်၎င်း၏အားသာချက်ရှိပါတယ်။ ပူဖောင်း sorting ၏ထို့ကြောင့်နည်းလမ်း - အရှိဆုံးသင်တစ်ဦးသတ်သတ်မှတ်မှတ်နိုင်ရန်အတွက်ပစ္စည်းများစီစဉ်ချင်လျှင်, ပြဿနာတစ်ခုကသဘာဝနဲ့ယုတ္တိဖြေရှင်းချက်မဟုတ်ကြောင်း။ ကိုယ်တိုင်သာမန်ပုဂ္ဂိုလ်တစ်ဦး, ဥပမာ, ကသူတို့ကိုအသုံးချပါလိမ့်မယ် - ကိုယ့်ပင်ကိုယ်အားဖြင့်။
ထိုကဲ့သို့သောပုံမှန်မဟုတ်သော name ကိုအဘယ်မှာရှိခဲ့သလဲ
Method ကိုနာမတျောကိုရေ၌လေထုပူဖောင်း၏နှိုင်းယှဉ်မယ်ဆိုရင်သုံးပြီးဖွင့်လာ၏။ ဒါဟာဥပစာပါပဲ။ သကဲ့သို့နည်းနည်းလေကြောင်းပူဖောင်းအထက်သို့မြင့်တက် - သူတို့ရဲ့သိပ်သည်းဆ (ဒီအမှု၌ - ရေကို) တစ်အရည်ထက် သာ. ကြီးမြတ်သည်ကို ထောက်. , စီစစ်ခင်းကျင်းဒြပ်စင်သည်သေးငယ်ပါကတန်ဖိုး, စာရင်းနံပါတ်များ၏ထိပ်မှပိုတဖြည်းဖြည်းနည်းလမ်းဖြစ်ပါတယ်။
အဆိုပါ algorithm ကို၏ဖော်ပြချက်
အောက်မှာဖေါ်ပြတဲ့အတိုင်းပူဖောင်းမျိုးဖျော်ဖြေနေသည်:
- ပထမဦးဆုံးအရှောက်သွား: အခင်းကျင်းနံပါတ်များ၏ဒြပ်စင်နှစ်ခုအားလုံးအတွက်အားဖြင့်ခေါ်ဆောင်သွားခြင်းနှင့်လည်းနှိုင်းယှဉ်နေပါတယ်။ နှစ်ခု-လူကိုအဖွဲ့သည်ပထမဆုံးတန်ဖိုးကိုအချို့ဒြပ်စင်ဒုတိယထက် သာ. ကြီးမြတ်သည်မှန်လျှင်, ထို program သူတို့ကိုလဲလှယ်သောနေရာများစေသည်;
- အကျိုးဆက် ၏အကြီးမားဆုံးသောအရေအတွက်က Miss ယင်းစစ်ခင်းကျင်း၏အဆုံး။ လူအပေါင်းတို့သည်အခြားဒြပ်စင်သူတို့အဖြစ်ဖရိုဖရဲထုံးစံ၌, ကျန်ကြွင်းနှင့်ထို့ထက် ပို. စုစည်းခြင်းလိုအပ်နေချိန်မှာ;
- ထို့ကြောင့်ဒုတိယ Pass နှင့်လိုအပ်: က (ပြီးသားဖော်ပြထား) ကယခင်နှင့်အတူတစ်ခုနဲ့နှိုင်းယှဉ်ခြင်းဖြင့်ဖန်ဆင်းတော်နှင့်တစ်ဦးနှိုင်းယှဉ်အရေအတွက်ဖြစ်ပါတယ် - အနုတ်တစ်ဦး;
- ပထမဦးဆုံးထကျ, တစျခုဒုတိယထက်လျော့နည်း, ထိုသူနှစ်ယောက်ကျမ်းပိုဒ်အရေအတွက်ကိုအနည်းဆုံးသုံးနှိုင်းယှဉ်။ ဒါအပေါ်;
- တစ်ဦးချင်းစီကျမ်းပိုဒ် (အခင်းကျင်းအားလုံးကိုတန်ဖိုးများကို, အထူးနံပါတ်) အနုတ် (ကျမ်းပိုဒ်နံပါတ်) နှိုင်းယှဉ်ရှိကြောင်းအကျဉ်းချုပ်။
program တစ်ခုပင်တိုတောင်း algorithm ကိုအဖြစ်စာဖြင့်ရေးသားနိုင်ပါတယ်:
- မဆိုနှစ်ခုနံပါတ်များကိုတှေ့ရှိရသရွေ့, သူတို့ကို၏ဒုတိယကပထမထက် သာ. ကြီးမြတ်ဖြစ်ခညျြနှောငျကြောင့်နံပါတ်များတစ်ခုခင်းကျင်း check လုပ်ထားသည်,
- အားမှားယွင်းစွာခင်းကျင်း software ကိုလဲလှယ်ရေးအစီအစဉ်တွေကိုတစ်ခုချင်းစီကိုအခြားဒြပ်စင်များနှင့် ပတ်သက်. positioned ။
ဖော်ပြထားတဲ့ algorithm ကိုအပေါ်အခြေခံပြီး Pseudocode
အောက်မှာဖေါ်ပြတဲ့အတိုင်းအရိုးရှင်းဆုံးအကောင်အထည်ဖော်မှုထွက်ယူသွားတတ်၏:
Sortirovka_Puzirkom လုပ်ထုံးလုပ်နည်း;
အစ
konechii_index မှ nachalnii_index ကနေညများအတွက်သံသရာ;
nachalnii_index ကနေကိုယ့် konechii_index-1 များအတွက်သံသရာ;
ဧရာလျှင် [i]> [ဈအကြီးအကျယ် + ထို့နောက်, 1] (တစ်စက္ကန့်ထက် သာ. ကြီးမြတ်ပထမဦးဆုံးဒြပ်စင်):
(သောအရပ်တို့ကိုမတန်ဖိုးများပြောင်းလဲပစ်);
အဆုံး
၏သင်တန်း, ဒီရိုးရှင်းသာအခွအေန aggravates: အ algorithm ကိုပုရိုးရှင်းတဲ့, ပိုကလူအပေါင်းတို့သည်အပြစ်အနာအဆာတငျပွ။ အချိန်ရင်းနှီးမြှုပ်နှံမှုအချိုးအစား (: အ layman ဘို့အချိန်ပမာဏသေးငယ်ပေမယ့်တကယ်တော့တစ်ဦးပရိုဂရမ်မာတိုင်းစက္ကန့်သို့မဟုတ်ပင်မီလီစက္ကန့ရေတွက်ထင်ရစေခြင်းငှါဒီနေရာမှာနှိုင်းလာ) ပင်သေးငယ်တဲ့စစ်ခင်းကျင်းဘို့သိပ်ကြီးလှ၏။
ဒါဟာပိုကောင်းတဲ့အကောင်အထည်ဖော်မှုကိုယူ။ ဥပမာအားဖြင့်, အကောင့်သို့စစ်ခင်းကျင်းနေရာတန်ဖိုးဖလှယ်ယူပြီး:
Sortirovka_Puzirkom လုပ်ထုံးလုပ်နည်း;
အစ
sortirovka = ဟုတ်မှန်သောသူ,
sortirovka = ဟုတ်မှန်သောသည်အထိသံသရာ;
sortirovka = မှားယွင်းသော;
nachalnii_index ကနေကိုယ့် konechii_index-1 များအတွက်သံသရာ;
ဧရာလျှင် [i]> [ဈအကြီးအကျယ် + ထို့နောက်, 1] (တစ်စက္ကန့်ထက် သာ. ကြီးမြတ်ပထမဦးဆုံးဒြပ်စင်):
(ဒြပ်စင်သောအရပ်တို့ကိုပြောင်းလဲစေ);
sortirovka = ဟုတ်မှန်သောသူ, (ထိုလဲလှယ်လုပ်ထားပြီးကြောင်းဖော်ထုတ်) ။
အဆုံး။
ကန့်သတ်
အဓိကအားနည်းချက်ကတော့ - လုပ်ငန်းစဉ်များ၏ကြာချိန်။ အချိန်ဘယ်လောက်ဖျော်ဖြေနေသည် algorithm ကို sorting ပူဖောင်း?
ခဲအချိန်စစ်ခင်းကျင်းစတုရန်းနံပါတ်များ၏နံပါတ်ကနေတွက်ချက် - က၏အဆုံးရလဒ်အချိုးကျသည်။
က element တွေကိုအနုတ်တဦးတည်းရဲ့တန်ဖိုးကိုရှိပါတယ်အဖြစ်အဆိုးဆုံးအတွက်ခင်းကျင်းအဖြစ်အကြိမ်ပေါင်းများစွာလွန်လျှင်။ အဆုံး၌တစ်ဦးတည်းသာနှိုင်းယှဉ်ဖို့ဘာမျှမရှိသည်သောဒြပ်စင်, နှင့်စစ်ခင်းကျင်းအသုံးမကျအရေးယူမှုဖြစ်လာမှတဆင့်နောက်ဆုံး pass တစရာရှိသောကြောင့်ဤအဖြစ်ပျက်။
ထို့အပြင်ခုနှစ်, သာသေးငယ်တဲ့အရွယ်အစား Array ကိုအဘို့, လို့ခေါ်ပါတယ်အဖြစ်ရိုးရှင်းတဲ့လဲလှယ်, sorting ၏ထိရောက်သောနည်းလမ်း။ လုပ်ငန်းစဉ်၏အကူအညီဖြင့်အချက်အလက်များ၏ပမာဏအလုပ်လုပ်မည်မဟုတ်: ရလဒ်ထို program ၏မှားယွင်းမှုတစ်ခုဒါမှမဟုတ်ရှုံးနိမ်တစ်ခုခုဖြစ်လိမ့်မည်။
ဂုဏ်
ပူဖောင်းမျိုးကိုနားလည်ရန်အလွန်လွယ်ကူသည်။ ပထမဦးဆုံးဌာန၌၎င်း၏ခင်းကျင်း pass ၏သာသနာကိုဒြပ်စင်များ၏လေ့လာမှုအတွက်လိုအပ်တဲ့နည်းပညာပိုင်းတက္ကသိုလ်များ၏သင်ရိုးညွှန်းတမ်း။ အဆိုပါနည်းလမ်းကိုညာဘက်နိုင်ရန်အတွက် Delphi Programming ကိုဘာသာစကား (L ကို (Delphi), နှင့် C / C ++ (ကို C / C ကိုပေါင်းပေါင်း), တည်နေရာ algorithm ကိုတစ်ဦးမယုံကြည်နိုင်လောက်အောင်ရိုးရှင်းသောတန်ဖိုးများကိုနှစ်ဦးစလုံးအကောင်အထည်ဖော်ရန်နှင့်မှာရန်လွယ်ကူသည် Pascal (Pascal) ။ ပူဖောင်းမျိုးအရင်ကဆိုရင်များအတွက်စံပြဖြစ်ပါတယ်။
ကြောင့် algorithm ကို၏အားနည်းချက်များမှသင်ရိုးညွှန်းတမ်းများရည်ရွယ်ချက်များအတွက်အသုံးပြုမပေးပါ။
Visual စုစည်းခြင်းနိယာမ
အဆိုပါစစ်ခင်းကျင်း 8 22 4 74 44 37 1 7 ၏ကနဦးအမြင်
အဆင့် 1 8 22 4 74 44 37 1 7
8 22 4 74 44 1 37 7
8 22 4 74 1 44 37 7
8 22 4 1 74 44 37 7
8 22 1 4 74 44 37 7
8 1 22 4 74 44 37 7
1 8 22 4 74 44 37 7
အဆင့် 2 1 8 22 4 74 44 7 37
1 8 22 4 74 7 44 37
1 8 22 4 7 74 44 37
1 8 22 4 7 74 44 37
1 8 4 22 7 74 44 37
1 4 8 22 7 74 44 37
အဆင့် 3 1 4 8 22 7 74 37 44
1 4 8 22 7 37 74 44
1 4 8 22 7 37 74 44
1 4 8 7 22 37 74 44
1 4 7 8 22 37 74 44
အဆင့် 4 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
အဆင့် 5 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
အဆင့် 6 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
အဆင့် 7 1 4 7 8 22 37 44 74
Pascal အတွက်ပူဖောင်းမျိုးဥပမာ
ဥပမာ:
const kol_mas = 10;
var အကြီးအကျယ်: ၏ခင်းကျင်း [1..kol_mas] ကိန်း;
a, b, ဋ: integer ဖြစ်တဲ့အတွက်;
အစပြု
writeln ( 'input ကို' kol_mas, '' စစ်ခင်းကျင်း၏ဒြပ်စင် ');
တစ်: = kol_mas 1 မှ readln (ဧရာ [တဲ့လုပျ ]);
kol_mas-1 = 1 ကိုစတင်ကြဘူး: တစ်များအတွက်
ခများအတွက်: kol_mas မှ = တစ် + 1 ခုကိုစတင်ကြဘူး
ဧရာလျှင် [တစ်]> [အကြီးအကျယ် ခ] ထို့နောက်စတင်
ဋ: = အကြီးအကျယ် [တစ်]; ဧရာ [တစ်]: = အကြီးအကျယ် [ ခ]; ဧရာ [ခ]: = ဋ;
အဆုံး;
အဆုံး;
အဆုံး;
( 'မျိုးပြီးနောက်') writeln;
တစ်: = kol_mas 1 မှ writeln (ဧရာ [တဲ့လုပျ ]);
အဆုံး။
ဥပမာပူဖောင်းကို C ဘာသာစကားမှာ (C) sorting
ဥပမာ:
#include
#include
(int argc, char * int အဓိက argv [])
{
int အကြီးအကျယ် [8] = {36, 697, 73, 82, 68, 12, 183, 88}, ဈ, ff;
{(;;) အတွက်
ff = 0;
{- (;; i> ကို 0 င်ကိုယ့်ကိုယ် = 7) များအတွက်
([i] <အကြီးအကျယ်ကြီးမားလျှင် [i- {1])
လဲလှယ်ရေးအစီအစဉ် (ဧရာ [i] အကြီးအကျယ် [i- 1]);
ff ++;
}
}
လျှင် (ff == 0) ချိုး;
}
getch (); // display ကိုနှောင့်နှေး
ပြန်လာပါ 0 င်;
} ။
Similar articles
Trending Now