ကွန်ပျူတာများပရိုဂရမ်းမင်း

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

 

 

 

 

Newest

Copyright © 2018 my.birmiss.com. Theme powered by WordPress.