በፕሮግራም አወጣጥ ውስጥ መረጃን ለመደርደር ዘዴዎች. ድርድሮችን ለመደርደር ዘዴዎች. የመደርደር ዘዴዎች የንጽጽር ባህሪያት

የመደርደር ዘዴዎች

በእድገት ወቅት ሶፍትዌርበጣም የተለመደ ክወና እሴቶችን መደርደር ነው, ማለትም. የንጥረ ነገሮችን ዝርዝር በተወሰነ ቅደም ተከተል ማደራጀት (ለምሳሌ፣ ቃላቶች በፊደል ቅደም ተከተል ወይም ቁጥሮች ወደ ላይ ወይም ወደ ላይ የሚወርዱ)።

ክፍሎችን ለመደርደር ብዙ ስልተ ቀመሮች አሉ። ከእነሱ በጣም ቀላሉ "አረፋ" ዘዴ ነው. አልጎሪዝም የሚተገበረው በሁለት ጎጆዎች መልክ ነው. በውስጠኛው ዑደት ውስጥ ሁሉም የዝግጅቱ አካላት በቅደም ተከተል ይመለከታሉ ፣ ተጓዳኝ አካላት በጥንድ ይነፃፀራሉ ፣ እና ሁለተኛው ከመጀመሪያው የሚበልጥ ከሆነ (በመውረድ ቅደም ተከተል ሲደረደሩ) ንጥረ ነገሮቹ ይለዋወጣሉ። የውስጠኛው ዑደት መለኪያ የድርድር ኤለመንት መረጃ ጠቋሚ (ቁጥር) ነው። ለተሟላ ዓይነት, እንዲህ ዓይነቱ መተላለፊያ n-1 ጊዜ መከናወን አለበት, n በድርድር ውስጥ ያሉ ንጥረ ነገሮች ቁጥር ነው. ይህንን ለማድረግ, ውጫዊ ዑደት ይደራጃል, መለኪያው የመደርደር ደረጃ ነው.

ለምሳሌ። ባለ አንድ-ልኬት የኢንቲጀር አባላትን በሽቅብ ቅደም ተከተል ደርድር።

ምስል 1 የንጥረ ነገሮችን እንደገና ማስተካከል ቅደም ተከተል ያሳያል.

ምስል 1. የአረፋ መደርደር

ምንም እንኳን በታቀደው ምሳሌ ውስጥ ምደባው በአራት ደረጃዎች የተጠናቀቀ ቢሆንም ፣ ንጥረ ነገሮቹን መፈተሽ ለሁለት ተጨማሪ ድግግሞሽ ይቀጥላል ፣ ምክንያቱም አጠቃላይ የድግግሞሽ ብዛት ከድርድር መጠኑ አንድ ያነሰ ነው።

ምስል 2 የታሰበውን አልጎሪዝም ንድፍ ያሳያል።

ምስል 2. የአረፋ መደርደር አልጎሪዝም ፍሰት ገበታ

ተለዋዋጭ m በሁለት ተለዋዋጮች መካከል የእሴቶችን ልውውጥ ለመፍቀድ አስተዋውቋል ፣ k ለመደርደር ደረጃዎች ተጠያቂ ነው።

ይህንን አልጎሪዝም በመጠቀም የC++ ፕሮግራም ይህን ይመስላል።


ምስል 3. የ "አረፋ" ዘዴን በመጠቀም የድርድር ክፍሎችን ለመደርደር ፕሮግራም

በአረፋ መደርደር ምክንያት ውጤታማ ያልሆነ ዘዴ ነው። ትልቅ ቁጥርንጽጽር.

ቀጥተኛ ምርጫ ዘዴ የበለጠ ውጤታማ ነው

የመጀመሪያው እርምጃ ሁሉንም የእሴቶች ዝርዝር በቅደም ተከተል ማየት እና ከሱ ዝቅተኛውን ወይም ከፍተኛውን መምረጥ (በአደራደሩ ቅደም ተከተል ላይ በመመስረት) ከዚያ ቀደም ሲል ከነበረው ንጥረ ነገር ጋር በመለዋወጥ በመጀመሪያ ቦታ ላይ ማስቀመጥን ያካትታል ።

ከዚያም ይህ አሰራር ይደገማል, ነገር ግን ዝቅተኛውን (ከፍተኛ) ዋጋ መፈለግ ከሁለተኛው ቦታ, ወዘተ. የዚህ ስልተ ቀመር ንድፍ በስእል 4 ቀርቧል።

የእሴት ሶፍትዌር መደርደር


ምስል 4. ቀጥተኛ ምርጫ መደርደር

በቀጥታ የመምረጫ ዘዴን በመጠቀም መደርደርን የሚተገበረው የፕሮግራሙ ቁራጭ ከዚህ በታች ቀርቧል።

// የድርድር ክፍሎችን በከፍታ ቅደም ተከተል ደርድር

int temp;// እሴቶችን በሚለዋወጡበት ጊዜ ለጊዜያዊ ማከማቻ ተለዋዋጭ

int i;// loop መቆጣጠሪያ ተለዋዋጭ (የአደራደር አባል ቁጥር)

int k;// loop መቆጣጠሪያ ተለዋዋጭ (የደረጃ ቁጥር መደርደር)

int nmin;//ዝቅተኛው እሴት ቁጥር

ለ (k=0; i< к 1; i++)

// በእሴቶች ዝርዝር ውስጥ የዝቅተኛውን ንጥረ ነገር ቁጥር ይፈልጉ [i ... n -1]

ለ (i = k+1; i< n; i++)

ከሆነ (ዝርዝር[i]< list[ nmin ]) nmin = i;

// ዝርዝር[nmin] እና ዝርዝር[k] ይቀያይሩ

temp = ዝርዝር [ nmin ];

ዝርዝር[ nmin ]= ዝርዝር[k];

ዝርዝር[k] = ሙቀት;

በውስጣዊው ዑደት ውስጥ ዝቅተኛውን ዋጋ መፈለግ በተቀረው ዝርዝር ውስጥ እንደሚከሰት ልብ ሊባል ይገባል.

በሚወርድበት ቅደም ተከተል ለመደርደር ከዝቅተኛው እሴት ይልቅ በእያንዳንዱ ደረጃ ከፍተኛውን ዋጋ ማግኘት ያስፈልግዎታል።

በሌላ ቀን, በ VKontakte ላይ በተሰጡ አስተያየቶች ውስጥ, ከሌሎች የፕሮጀክቱ ተማሪዎች አንዱ ጋር ተከራክሬ ነበር. የክርክሩ ይዘት “ማን ያሸነፈው” ነበር - ከጃቫ.util.Arrays ክፍል ወይም በራሳቸው የተፃፉ የቀላል ስልተ ቀመሮች ዓይነት () ዘዴ፡- አረፋ(አረፋ) ማስገባት(ያስገባል) ምርጫ(በምርጫ) ቅርፊት(ሼል አልጎሪዝም). ለአንዳንዶች መልሱ ይህ ጥያቄግልጽ ሊሆን ይችላል, ነገር ግን አለመግባባቱ ከተነሳ ጀምሮ, እያንዳንዱ ተዋዋይ ወገኖች በአመለካከታቸው ላይ "የተከበሩ ምንጮች" ቢኖራቸውም, በሂደቱ ውስጥ ግራጫውን በመዘርጋት, የተለያዩ ስልተ ቀመሮችን በመተግበር ጥናት ለማካሄድ ተወስኗል. . TL;DR java.util.Arrays.ደርድር() ያለ ምንም ቅድመ ሁኔታ በ100,000 ንጥረ ነገሮች ድርድር ይመራል። አነስ ያለ መጠንየሼል ዘዴ አንዳንድ ጊዜ ከእሱ ጋር ሊወዳደር ይችላል. የተቀሩት ስልተ ቀመሮች ሙሉ በሙሉ ባዶ ናቸው እና ጠቃሚ ሊሆኑ የሚችሉት በአንዳንድ ልዩ ሁኔታዎች ውስጥ ብቻ ነው።አሁን በሲሊኮን uber-መሣሪያዎቻችን ውስጥ ድርድሮች እንዴት እንደሚደረደሩ እንመልከት።

ምርጫ ዓይነት። በምርጫ መደርደር

በቀላል እና እንጀምር ግልጽ መንገድ. የሱን ፍሬ ነገር በሮበርት ሴድጊክ በቪዲዮ ኮርስራ ላይ ባቀረበው የቪድዮ ንግግራቸው ፍፁም ሆኖ ገልፆልናል (ከዛ ላይ በመጥፎ ወደ gif የጨመቅኩትን አኒሜሽን እጠቅሳለሁ) ከመጀመሪያው ኤለመንቱ ድርድር ውስጥ መሮጥ፣ በእያንዳንዱ እርምጃ እንፈልገዋለን። በቀኝ በኩል ዝቅተኛው ንጥረ ነገርአሁን ያለውን የምንለዋወጥበት። በዚህ ምክንያት የኛን የድርድር የመጨረሻ እትም በተደረደረ መልኩ እናስቀምጠዋለን። ይህን አልጎሪዝም በጃቫ ውስጥ የሚተገበር ኮድ ይኸውና፡ የህዝብ ባዶ መደብ (int array) ( int n = array. length; ለ (int i = 0; i< n; i ++ ) { int minIndex = min (array, i, n - 1 ) ; swap (array, i, minIndex) ; } } public static void swap (int array, int i, int j) { int temp = array[ i] ; array[ i] = array[ j] ; array[ j] = temp; } public static int min (int array, int begin, int end) { int minVal = array[ begin] ; int minIndex = begin; for (int i = begin + 1 ; i <= end; i++ ) { if (array[ i] < minVal) { minVal = array[ i] ; minIndex = i; } } return minIndex; } Анализ алгоритма показывает, что необходимо на каждом проходе прошерстить весть остаток массива, то есть нам понадобится ровно N + (N-1) + (N-2) + … + 1 = N^2/2 сравнений. Таким образом, сложность алгоритма составляет O(N^2). Что же это означает? А означает это, что, увеличив количество элементов в массиве (N) в 2 раза, мы увеличим время работы алгоритма не в 2, а в 2^2 = 4 раза. Увеличив N в 10 раз, время работы увеличим в 100 раз и так далее. На моем ноутбуке 2012 года с процессором Core i3 под Ubuntu 14.4 я получил следующее время работы:

የማስገቢያ ዓይነት የማስገቢያ ዓይነት

እዚህ ሀሳቡ ትንሽ የተለየ ነው. እንደገና፣ ወደ ዶ/ር ሴድግዊክ አኒሜሽን እንሸጋገር፡ ከፊት ያለው ነገር በእኛ ዘንድ እንኳን እስካሁን አልታየም፣ እና የምንተወው ሁሉ ሁሌም በሥርዓት ይኖራል። ነጥቡ እያንዳንዱን የዋናው ድርድር አዲስ ኤለመንትን በትንሽ ኤለመንት ላይ “እስከሚያርፍ” ድረስ ወደ መጀመሪያው “እንመለሳለን” ነው። ስለዚህ፣ እንደገና N ማለፊያዎች አሉን (ለመጀመሪያው ድርድር ለእያንዳንዱ አካል) ፣ ግን በእያንዳንዱ ማለፊያ ፣ በአብዛኛዎቹ ሁኔታዎች ፣ ቀሪውን ሙሉ በሙሉ አንመለከትም ፣ ግን አንድ ክፍል ብቻ። ማለትም፣ አማራጭ 1 + (N-1) + (N-2) + … + N = N^2/2 የምናገኘው እያንዳንዱን ቀጣይ አካል ወደ መጀመሪያው መመለስ ካለብን ብቻ ነው ማለትም በጉዳዩ ላይ። የመግቢያው የተደረደሩት "በተቃራኒው" ድርድር (ዕድለኛ ያልሆነ ፣ እድለኛ ያልሆነ)። ቀደም ሲል በተደረደረው ድርድር (እድል እዚህ አለ) የተሟላ ፍሪቢ ይኖራል - በእያንዳንዱ ማለፊያ ላይ አንድ ንፅፅር ብቻ ነው እና ኤለመንቱን በቦታው ይተዋል ፣ ማለትም ፣ አልጎሪዝም ከ N ጋር በተመጣጣኝ ጊዜ ውስጥ ይሰራል። የአልጎሪዝም በከፋ ንድፈ ሃሳባዊ ጉዳይ ማለትም O(N^2) ይወሰናል። በአማካይ፣ የክዋኔው ጊዜ ከ N^2/4 ጋር ተመጣጣኝ ይሆናል፣ ማለትም፣ ከቀዳሚው ስልተ-ቀመር በእጥፍ ይበልጣል። በእኔ አተገባበር፣ ጥሩ ባልሆነ የፐርሙቴሽን አጠቃቀም ምክንያት፣ የሩጫ ጊዜው ከምርጫ የበለጠ ነበር። ጽሁፉን በቅርቡ ለማረም እና ለማዘመን እቅድ አለኝ። ኮድ እና በተመሳሳይ ማሽን ላይ የማስኬድ ውጤቱ ይኸውና፡ የህዝብ ባዶነት አይነት (int array) ( int length = array. length; ለ (int i = 1; i< length; i++ ) { for (int j = i; j >= 1; j--) (ከሆነ (ድርድር[j])< array[ j - 1 ] ) swap (array, j, j - 1 ) ; else break ; } } }

የሼል ዓይነት. የሼል ዓይነት

አንድ ብልህ ሰው ዶናልድ ሼል እ.ኤ.አ. በ 1959 ወደ ኋላ አስተውሏል ፣ በአልጎሪዝም ውስጥ በጣም ውድ የሆኑት ጉዳዮች ንጥረ ነገሩ ወደ ድርድር መጀመሪያ ሲመለስ ነው ። በአንዳንድ ሁኔታዎች ኤለመንቱን በሁለት ቦታዎች እንመልሰዋለን ። , እና በሌላ በኩል በጠቅላላው ድርድር ውስጥ ማለፍ ማለት ይቻላል እስከ መጀመሪያው ድረስ ሩቅ እና ረጅም ነው። በበርካታ ንጥረ ነገሮች ውስጥ በመዝለል ይህንን በአንድ ጊዜ ማድረግ ይቻላል? እና እንደዚህ አይነት መንገድ አገኘ. ልዩ ከፊል ዓይነቶች በቅደም ተከተል አፈጻጸም ውስጥ ያካትታል, ይባላል አጠቃላይ እይታ d-sort ወይም እንደ ሴድግዊክ ገለጻ፣ h-sort (እጠረጠራለሁ h ማለት ሆፕ ማለት ነው)። 3-የመደርደር ለምሳሌ በጥያቄ ውስጥ ያለውን ኤለመንቱን ከቀዳሚው ጋር ያወዳድራል፣ ነገር ግን ሁለቱን ይዘለላል እና ከአንደኛው 3 ቦታ ጋር ያወዳድራል። ከተቀየረ፣ እንደገና ከኤለመንት 3 አቀማመጥ እና ከመሳሰሉት ጋር ያወዳድራል። ዋናው ነገር የውጤቱ ድርድር "3-የተደረደሩ" ይሆናል, ማለትም, የንጥሎቹ የተሳሳተ ቦታ ከ 3 አቀማመጦች ያነሰ ይሆናል. በዚህ የማስገቢያ ስልተ ቀመር መስራት ቀላል እና አስደሳች ይሆናል. በነገራችን ላይ "1-ደርድር" ከማስገባት ስልተ-ቀመር ብቻ የዘለለ አይደለም =) h-sortን በቅደም ተከተል በመቀነስ h እሴቶችን ወደ ድርድር በመተግበር አንድ ትልቅ ድርድር በፍጥነት መደርደር እንችላለን። ምን እንደሚመስል እነሆ፡ እዚህ ያለው ችግር እንዴት መምረጥ ነው። ትክክለኛ ቅደም ተከተልከፊል ዓይነቶች. በመጨረሻም የአልጎሪዝም አፈፃፀም በዚህ ላይ የተመሰረተ ነው. በጣም የተለመደው በዶናልድ ክኑት የቀረበው ቅደም ተከተል ነው: h = h * 3 + 1, ማለትም, 1, 4, 13, 40, ... እና እስከ 1/3 የድርድር መጠን. ይህ ቅደም ተከተል ጥሩ አፈጻጸም ያቀርባል እና ለመተግበር ቀላል ነው. የአልጎሪዝም ትንተና ብዙ ቋንቋዎችን ይፈልጋል እና ከአቅሜ በላይ ነው። የትንታኔው ስፋት በብዙ የ h ቅደም ተከተሎችም ይወሰናል. በተጨባጭ, የአልጎሪዝም ፍጥነት በጣም ጥሩ ነው ማለት እንችላለን - ለራስዎ ይመልከቱ: ከአንድ ሰከንድ ባነሰ ጊዜ ውስጥ አንድ ሚሊዮን ንጥረ ነገሮች! እና እዚህ የጃቫ ኮድ ከ Knut ቅደም ተከተል ጋር ነው። የሕዝብ ባዶ ዓይነት (int array) (int h = 1; ሳለ (h* 3< array. length) h = h * 3 + 1 ; while (h >= 1) ( hSort (ድርድር፣ h)፣ h = h/ 3; )) የግል ባዶ hSort (int array, int h) ( int length = array. length; for (int i = h; i< length; i++ ) { for (int j = i; j >= h; j = j - h) (ከሆነ (ድርድር[j])< array[ j - h] ) swap (array, j, j - h) ; else break ; } } }

የአረፋ ዓይነት። የአረፋ ዘዴ

ይህ ክላሲክ ነው! እያንዳንዱ ጀማሪ ፕሮግራመር ማለት ይቻላል ይህን ስልተ ቀመር ተግባራዊ ያደርጋል። ዶ/ር ሴድጊዊክ ለእሱ አኒሜሽን እንኳን ስላልነበረው እኔ ራሴ ስራውን መስራት ነበረብኝ። እዚህ በእያንዳንዱ ማለፊያ ላይ ድርድርን ከመጀመሪያው እስከ መጨረሻ እናቋርጣለን, ከትዕዛዝ ውጪ የሆኑትን የጎረቤት አካላትን እንለዋወጣለን. በውጤቱም, ትላልቆቹ ንጥረ ነገሮች "ይንሳፈፋሉ" (ስለዚህ ስሙ) እስከ ድርድር መጨረሻ ድረስ. አደራደሩ አስቀድሞ እንደተደረደረ (የተደረደረ = እውነት) ብለን ተስፋ በማድረግ እያንዳንዱን አዲስ ማለፊያ እንጀምራለን። በአንቀጹ መጨረሻ ላይ ስህተት እንደሠራን ካየን አዲስ ምንባብ እንጀምራለን. እዚህ ያለው ችግር፣ እንደገና፣ በእያንዳንዱ ማለፊያ ላይ ሙሉውን ድርድር (ከሞላ ጎደል) እያሳለፍን ነው። ንጽጽር በእያንዳንዱ ደረጃ ይከሰታል, ልውውጥ በእያንዳንዱ ደረጃ ማለት ይቻላል ይከሰታል ይህ አልጎሪዝምበጣም ቀርፋፋ ከሆኑት ውስጥ አንዱ (በምክንያታዊነት የተተገበሩትን ከግምት ውስጥ የምናስገባ ከሆነ እና “የመንቀጥቀጥ ዓይነት” እና ሌሎች እንደዛ አይደለም)። የሚገርመው በመደበኛነት እዚህ ያለው ውስብስብነት ከO(N^2) ጋር እኩል እንደሚሆን ነው፣ነገር ግን ቅንጅቱ ከማስገቢያ እና ምርጫዎች በጣም የላቀ ነው። አልጎሪዝም ኮድ፡ የህዝብ ባዶነት አይነት (int array) ( ቡሊያን ተደረደረ፤ int nMinusOne = array. ርዝመት - 1; ለ (int i = 0; i< nMinusOne; i++ ) { isSorted = true ; for (int j = 0 ; j < nMinusOne - i; j++ ) { if (array[ j] >ድርድር [ j + 1 ] ) (ስዋፕ (ድርድር፣ j፣ j + 1)፣ isSorted = false; ) ) (የተለየ) ከተመለሰ; ) ) የስራ ጊዜ፡ ልዩነቱ ይሰማህ፡ ከአንድ ሚሊዮን ኤለመንቶች ላይ ከግማሽ ሰአት በላይ! ማጠቃለያ፡- ይህንን አልጎሪዝም በጭራሽ አይጠቀሙ !!!

የመጀመሪያው ክፍል ማጠቃለያ

በውጤቱም, ለእነዚህ ስልተ ቀመሮች አጠቃላይ ሰንጠረዥን ለመመልከት ሀሳብ አቀርባለሁ. አብሮ በተሰራው የ java.util.Arrays.sort() ዘዴ ከውጤቶቹ ጋር ማወዳደርም ይችላሉ። አንድ ዓይነት አስማት ይመስላል - ከሼል ምን ፈጣን ሊሆን ይችላል? በሚቀጥለው ክፍል ስለዚህ ጉዳይ እጽፋለሁ. እዚያ በሰፊው ጥቅም ላይ የዋሉ ፈጣን ስልተ ቀመሮችን እንመለከታለን ፣ እንዲሁም መደርደርን በማዋሃድ ፣ የጥንታዊ እና የማጣቀሻ ዓይነቶችን ለመደርደር ዘዴዎች ልዩነት እንማራለን እንዲሁም በዚህ ጉዳይ ላይ በጣም አስፈላጊ ከሆነው ከንፅፅር በይነገጽ ጋር እንተዋወቅ ።) ከዚህ በታች በሰንጠረዥ መረጃ በሎጋሪዝም ሚዛን ላይ የተሰራውን ግራፍ ማጥናት ይችላሉ። መስመሩ ጠፍጣፋ ከሆነ አልጎሪዝም የተሻለ ይሆናል =) ሙሉውን ፕሮጀክት ለማውረድ እና በራሳቸው ሙከራ ለማካሄድ ለሚፈልጉ, ሊንኩን ያስቀምጡ: Java በሚቀጥለው ክፍል እንገናኝ! =) የመጀመሪያ ደረጃ የመደርደር ዘዴዎችስልተ ቀመሮችን ለመደርደር እንደ መጀመሪያው ጉብኝታችን፣ ለትናንሽ ፋይሎች ወይም ልዩ መዋቅር ላላቸው ፋይሎች ጥሩ የሚሰሩ አንዳንድ “አንደኛ ደረጃ” ዘዴዎችን እንመረምራለን። እነዚህን ለማጥናት በርካታ ምክንያቶች አሉ ቀላል ዘዴዎች. በመጀመሪያ፣ የቃላት አጠቃቀሙን እና የመደርደር ስልተ ቀመሮችን ለመማር በአንጻራዊ ሁኔታ ህመም የሌለው መንገድ ይሰጡናል፣ ይህም ይበልጥ ውስብስብ ስልተ ቀመሮችን ለማጥናት አስፈላጊውን መሰረት ይሰጠናል። ሁለተኛ፣ ለብዙ የመለየት ችግሮች ውስብስብ ከሆኑት ይልቅ ቀላል ዘዴዎችን መጠቀም የተሻለ ሊሆን ይችላል። ውስብስብ ስልተ ቀመሮች. በመጨረሻም, አንዳንድ ቀላል ዘዴዎች ወደ ተጨማሪ ሊራዘም ይችላል ጥሩ ዘዴዎችወይም ይበልጥ ውስብስብ የሆኑትን ለማሻሻል ይጠቀሙባቸው በአንዳንድ የመደርደር ፕሮግራሞች, ቀላል ስልተ ቀመሮችን መጠቀም የተሻለ ነው. ፕሮግራሞችን መደርደር ብዙውን ጊዜ አንድ ጊዜ ብቻ (ወይም ብዙ ጊዜ) ጥቅም ላይ ይውላል። መደርደር ያለባቸው የንጥረ ነገሮች ብዛት ትልቅ ካልሆነ (ከ 500 ያነሰ ኤለመንቶች ይበሉ) ከዚያ ቀላል ስልተ-ቀመርን መጠቀም ውስብስብ ስልተ-ቀመር ከመፍጠር እና ከማረም የበለጠ ውጤታማ ሊሆን ይችላል። የአንደኛ ደረጃ ዘዴዎች ሁልጊዜ ለትንሽ ፋይሎች ተስማሚ ናቸው (ይናገሩ, ከ 50 ያነሱ ንጥረ ነገሮች); ለእንደዚህ ዓይነቶቹ ፋይሎች ውስብስብ ስልተ ቀመር መጠቀም ብልህነት ሊሆን አይችልም ፣ በእርግጥ መደርደር ካልፈለገ በስተቀር ብዙ ቁጥር ያለውእንደነዚህ ያሉ ፋይሎች እንደ አንድ ደንብ. የመጀመሪያ ደረጃ ዘዴዎችየምንወያይበት, ስለ መደርደር ስራዎችን እናከናውናለን ኤንበዘፈቀደ የተመረጡ ንጥረ ነገሮች. ከሆነ ኤንትንሽ ፣ ከዚያ ይህ ችግር ላይሆን ይችላል ፣ እና ንጥረ ነገሮቹ በዘፈቀደ ካልተከፋፈሉ እነዚህ ስልተ ቀመሮች ከተወሳሰቡ የበለጠ በፍጥነት ሊሠሩ ይችላሉ። ማስታወስ ያለብን ነገር ግን እነዚህ ስልተ ቀመሮች ለትልቅ በዘፈቀደ ቅደም ተከተል የተቀመጡ ፋይሎች ጥቅም ላይ መዋል የለባቸውም፣ ከአንድ ለየት ያለ የሼል አይነት አልጎሪዝም ነው፣ ይህም በብዙ ፕሮግራሞች ውስጥ ብዙ ጊዜ ጥቅም ላይ ይውላል። የጨዋታው ህጎች

ማንኛውንም የተለየ አልጎሪዝም ከመመልከትዎ በፊት ስልተ ቀመሮችን ስለመደርደር የቃላቶቹን እና አንዳንድ መሰረታዊ ስምምነቶችን መማር ጠቃሚ ነው። ለመደርደር ስልተ ቀመሮችን እናጠናለን። ፋይሎችን መቅዳትየያዘ ቁልፎች. የመዝገቡ አካል ብቻ የሆኑ ቁልፎች (ብዙውን ጊዜ በጣም ትንሽ ክፍል) ፣ የመደርደር ሂደቱን ለመቆጣጠር ያገለግላሉ። የመደርደር አልጎሪዝም ዓላማ መዝገቦቹን በፋይል ውስጥ እንደገና ማደራጀት ነው ስለዚህም በተወሰነ ቅደም ተከተል (በተለምዶ በፊደል ወይም በቁጥር) እንዲታዩ።

የሚደረደረው ፋይል ሙሉ በሙሉ ወደ ማህደረ ትውስታ (ወይም ሙሉ በሙሉ ወደ ድርድር የሚስማማ ከሆነ) ለእሱ እንጠቀማለን ውስጣዊየመደርደር ዘዴዎች. መረጃን ከቴፕ ወይም ከዲስክ መደርደር ይባላል ውጫዊመደርደር. በመካከላቸው ያለው ዋነኛው ልዩነት ከውስጥ መደርደር ማንኛውም መዝገብ በቀላሉ የሚገኝ ሲሆን በውጫዊ መደርደር ግን መዝገቦችን በቅደም ተከተል ወይም በትላልቅ ብሎኮች ብቻ መጠቀም እንችላለን። የምንመለከታቸው አብዛኛዎቹ የመደርደር ስልተ ቀመሮች ውስጣዊ ናቸው።

ብዙውን ጊዜ, በአልጎሪዝም ውስጥ የሚስቡን ዋናው ነገር የሩጫ ጊዜ ነው. ኤን ኤለመንቶችን ለመደርደር የምንመለከታቸው የመጀመሪያዎቹ አራት ስልተ ቀመሮች ተመጣጣኝ የሩጫ ጊዜ ሲኖራቸው፣ ይበልጥ ውስብስብ ስልተ ቀመሮች ደግሞ ተመጣጣኝ የሩጫ ጊዜን ይጠቀማሉ። (ምንም ዓይነት የመደርደር ስልተ ቀመር በቁልፍ መካከል ካለው ንፅፅር ያነሰ ጥቅም ላይ ሊውል እንደማይችል ያሳያል።) ቀላል ዘዴዎችን ከመረመርን በኋላ የሩጫ ጊዜያቸው ተመጣጣኝ የሆነ በጣም ውስብስብ ዘዴዎችን እና አጠቃላይ የሩጫ ጊዜን ለመቀነስ የሁለትዮሽ ባህሪያትን የሚጠቀሙ ዘዴዎችን እንመለከታለን። ኤን.

ጥቅም ላይ የዋለው መጠን ተጨማሪ ማህደረ ትውስታአልጎሪዝም መደርደር ሌላ ነው። ጠቃሚ ምክንያትእኛ ግምት ውስጥ የምናስገባበት. በአጠቃላይ ፣ የመለያ ዘዴዎች በሦስት ዓይነቶች ይከፈላሉ ።

ምንም ተጨማሪ ማህደረ ትውስታ ሳይጠቀሙ የመደርደር ዘዴዎችን, ምናልባትም ትንሽ ቁልል እና / ወይም ድርድር ካልሆነ በስተቀር;

ለመደርደር ጥቅም ላይ የሚውሉ ዘዴዎች ተዛማጅ ዝርዝሮችእና ስለዚህ ይጠቀሙ ኤንበማህደረ ትውስታ ውስጥ የተከማቹ ተጨማሪ ጠቋሚዎች;

እና እየተደረደረ ያለውን ፋይል ቅጂ ለማከማቸት ተጨማሪ ማህደረ ትውስታ የሚያስፈልጋቸው ዘዴዎች.

መረጋጋት- የመደርደር ዘዴዎች ሌላ አስፈላጊ ባህሪ. የመደርደር ዘዴው ይባላል የተረጋጋ ፣በተመሳሳዩ ቁልፎች የመዝገቦችን አንጻራዊ ቅደም ተከተል ካስቀመጠ. ለምሳሌ, ከሆነ የፊደል አጻጻፍ ዝርዝርቡድኖች በደረጃዎች የተደረደሩ ናቸው, የተረጋጋው ዘዴ ተመሳሳይ ክፍል ያላቸው ተማሪዎች ስሞች በፊደል ቅደም ተከተል የሚታዘዙበት ዝርዝር ይፈጥራል, እና ያልተረጋጋው ዘዴ ዋናውን ቅደም ተከተል ሊጣስ የሚችልበትን ዝርዝር ይፈጥራል. አብዛኛዎቹ ቀላል ዘዴዎች የተረጋጉ ናቸው, በጣም የታወቁት ግን ውስብስብ ዘዴዎች- አይ። መረጋጋት ካስፈለገ ከመደርደርዎ በፊት ትንሽ ኢንዴክስ ወደ ቁልፉ በመጨመር ወይም ቁልፉን በሆነ መንገድ በማራዘም ማግኘት ይቻላል. መረጋጋት እንደ ደንቡ በቀላሉ ተቀባይነት አለው; ሰዎች አለመረጋጋትን ከመተማመን ጋር ይይዛሉ. እንደ እውነቱ ከሆነ, ተጨማሪ ጊዜ ወይም ቦታ ሳይጠቀሙ ጥቂት ዘዴዎች መረጋጋት ያገኛሉ.

የሚከተለው መርሃ ግብር, ሶስት መዝገቦችን ለመደርደር, የምንጠቀመውን መሰረታዊ ስምምነቶችን ለማሳየት ነው. በተለየ ሁኔታ፣ ዋና ፕሮግራምለ N = 3 ብቻ እንደሚሰራ ለማወቅ ጉጉ; ነጥቡ ማንኛውም የመደርደር ፕሮግራም ወደ አንድ ሂደት ሊቀንስ ይችላል መደርደር3ይህ ፕሮግራም.

ሶስት የምደባ መግለጫዎች፣ እያንዳንዱ ከዋኝ ይከተላል ከሆነ፣እንደ እውነቱ ከሆነ "የልውውጥ" አሠራርን ተግባራዊ ያደርጋሉ. በቀጥታ ወደ ውስጥ እንለጥፈዋለን የፕሮግራም ኮድየብዙ ስልተ ቀመሮች መሰረት ስለሆኑ እና ብዙ ጊዜ በ loop ውስጥ ስለሚወድቁ የአሰራር ጥሪን ከመጠቀም ይልቅ።

በአልጎሪዝም ጉዳዮች ላይ ለማተኮር፣ ኢንቲጀርን በቁጥር ቅደም ተከተል ከሚደረደሩ ስልተ ቀመሮች ጋር እንሰራለን። በአጠቃላይ እንዲህ ያሉ ስልተ ቀመሮችን ለማመቻቸት በጣም ቀላል ነው ተግባራዊ አጠቃቀም, ይህም በትላልቅ ቁልፎች ወይም መዝገቦች መስራትን ያካትታል. በመሠረቱ, የመደርደር ፕሮግራሞች ከመዝገቦች ጋር በሁለት መንገድ ይሠራሉ: ወይም ያወዳድሩ እና ቁልፎቹን ብቻ ይለያሉ, ወይም ሙሉ መዝገቦችን ያንቀሳቅሳሉ. የምናጠናቸው አብዛኛዎቹ ስልተ ቀመሮች ከእነዚህ ሁለት ኦፕሬሽኖች አንፃር በመቀየር ሊተገበሩ ይችላሉ። የዘፈቀደ መዝገቦች. የተደረደሩት መዝገቦች በጣም ትልቅ ከሆኑ፣ “በተዘዋዋሪ መንገድ” ውስጥ እንዳይዘዋወሩ መሞከር የተለመደ ነው፡ ይህ መዝገቦቹን እራሳቸው እንደገና አይደራጁም ይልቁንም ጠቋሚዎችን (ኢንዴክሶችን) እንደገና በማዘዝ የመጀመሪያው ጠቋሚ ወደ ትንሹ ንጥረ ነገር, ወዘተ. ቁልፎች በመዝገቦች (ትልቅ ከሆኑ) ወይም በጠቋሚዎች (ትንሽ ከሆኑ) ሊቀመጡ ይችላሉ. አስፈላጊ ከሆነ, ከተጣራ በኋላ መዝገቦቹን እንደገና ማስተካከል ይችላሉ. ይህ ከዚህ በታች ተብራርቷል.

ፕሮግራም መደርደር3የበለጠ ይጠቀማል የተገደበ መዳረሻወደ ፋይል፡- እነዚህ ሦስት የቅጹ ኦፕሬሽኖች ናቸው “ሁለት መዝገቦችን አወዳድር እና አስፈላጊ ከሆነ መዝገብ በትንሹ ቁልፍ በመጀመሪያ ቦታ ላይ ለማስቀመጥ። ለእንደዚህ አይነት ስራዎች የተገደቡ ፕሮግራሞች አስደሳች ናቸው, ምክንያቱም በ ላይ ለመተግበር ተስማሚ ናቸው የሃርድዌር ደረጃ. በኋላ በዝርዝር እናጠናቸዋለን።

ሁሉም ናሙና ፕሮግራሞች ለመደርደር ጥቅም ላይ ይውላሉ ዓለም አቀፍ ድርድር. ይህ ማለት ይህ አካሄድ ድርድርን እንደ መለኪያ ከማለፍ የተሻለ ወይም የከፋ ነው ማለት አይደለም። ሁሉም በአመለካከት እና በተወሰነው ስልተ ቀመር ይወሰናል. አደራደሩ ዓለም አቀፋዊ እንዲሆን የተደረገው ያኔ ምሳሌዎቹ እያጠሩ እና ግልጽ ስለሚሆኑ ብቻ ነው።

በምርጫ መደርደርበጣም ቀላል ከሆኑት የመደርደር ዘዴዎች አንዱ እንደዚህ ነው የሚሰራው-በድርድር ውስጥ ያለውን ትንሹን ንጥረ ነገር ይፈልጉ እና በመጀመሪያ ከኤለመንቱ ጋር ይቀይሩት። ከዚያም በፋይሉ ውስጥ ካለው ሁለተኛ ቦታ ላይ ሂደቱን መድገም እና የተገኘውን ንጥረ ነገር ከሁለተኛው ንጥረ ነገር ጋር እንለውጣለን እና ሙሉው ድርድር እስኪደረደር ድረስ. ይህ ዘዴ ይባላል ምርጫ ዓይነት ፣ምክንያቱም በስእል 1 ላይ እንደሚታየው ትንሹን የቀረውን ንጥረ ነገር በብስክሌት በመምረጥ ይሰራል። በመጀመሪያው ማለፊያ ላይ የቦታ ቁምፊው መጀመሪያ ይሄዳል፣ በሁለተኛው ማለፊያ ላይ 'B' በሚለው ፊደል ይለዋወጣል። ኤለመንት `P' እና ሌሎችም .የሚከተለው ፕሮግራም ለሁሉም ሰው የዚህን ሂደት ሙሉ አተገባበር ይሰጣል። እኔከ 1 እስከ ኤን- 1 ፣ ትንሹን የ a እኔ..N] ከ[ እኔ]፡ ጠቋሚው ሲንቀሳቀስ እኔከግራ ወደ ቀኝ በፋይሉ በኩል, በጠቋሚው በስተግራ ያሉት ንጥረ ነገሮች ቀድሞውኑ በመጨረሻው ቦታ ላይ ናቸው (እና እንደገና አይነኩም), ስለዚህ ጠቋሚው ወደ ቀኝ ጠርዝ በሚደርስበት ጊዜ ድርድር ሙሉ በሙሉ ይደረደራል በጣም ቀላል ከሆኑት ውስጥ አንዱ ነው, እና ለአነስተኛ ፋይሎች በጣም ጥሩ ይሰራል. የእሱ "ውስጣዊ ዑደት" ማነፃፀርን ያካትታል. እኔ]ደቂቃ] (ለመጨመር የሚያስፈልገው ኮድ በተጨማሪ እና ከመጠን በላይ አለመሆኑን በማጣራት ኤን), ይህም በቀላሉ ሊቀልል የማይችል ሲሆን, ምንም እንኳን የመምረጫ ዓይነት ምንም እንኳን የጭካኔ ዘዴ ቢሆንም, በጣም አስፈላጊ የሆነ አፕሊኬሽን አለው: እያንዳንዱ ኤለመንቱ ቢበዛ አንድ ጊዜ ስለሚንቀሳቀስ, በትንሽ ቁልፎች ለትልቅ መዝገቦች በጣም ጥሩ ነው. የማስገቢያ ዓይነትዘዴ መደርደር አስገባ፣ከሞላ ጎደል እንደ ምርጫ ዓይነት ቀላል፣ ግን የበለጠ ተለዋዋጭ። ይህ ዘዴ ብዙውን ጊዜ ካርዶችን በሚለይበት ጊዜ ጥቅም ላይ ይውላል-አንድ ንጥረ ነገር ወስደን ቀደም ብለን ካደረግናቸው ሰዎች መካከል ወደ ትክክለኛው ቦታ እናስገባዋለን (በዚህም ተስተካክለው እንተወዋለን) ትልቁን ኤለመንት ወደ አንድ ቦታ በማንቀሳቀስ ነው በቀኝ እና ከዚያም ትንሹን ንጥረ ነገር ወደ ክፍት ቦታ ላይ በማስቀመጥ በስእል 2 ላይ እንደሚታየው "እኔ" በሦስተኛው ደረጃ ላይ ከሌሎቹ የተደረደሩ ንጥረ ነገሮች ሁሉ ያነሰ ነው, ስለዚህ ወደ ድርድር መጀመሪያ "እናስጠምጠዋለን." "ከ"እኔ" ይበልጣል ነገር ግን ከሌሎቹ ሁሉ ያነሰ ነው፣ ስለዚህ በ'I' እና 'P' መካከል እናስቀምጠዋለን፣ እና ይህ ሂደት በሚከተለው ፕሮግራም ውስጥ ተግባራዊ ይሆናል። ለእያንዳንድ እኔከ 2 እስከ ኤን፣ ንዑስ ክፍል ሀ የሚደረደረው [ በማስቀመጥ ነው። እኔ] ቀደም ሲል ከተደረደሩት ንጥረ ነገሮች መካከል ወደ ተስማሚ ቦታ: እንደ ምርጫ ዓይነት ፣ ንጥረ ነገሮቹን በጠቋሚው ግራ በኩል በመደርደር ላይ እኔቀድሞውንም በቅደም ተከተል ላይ ናቸው፣ ነገር ግን እነሱ በመጨረሻው ቦታ ላይ አይደሉም፣ ምክንያቱም አሁንም በኋላ የሚያጋጥሟቸውን ትናንሽ ንጥረ ነገሮች ለማስገባት ወደ ቀኝ ሊወሰዱ ስለሚችሉ ነው። ጠቋሚው ወደ ቀኝ ጠርዝ ሲደርስ ድርድር ሙሉ በሙሉ ይደረደራል ነገር ግን አንድ ተጨማሪ አስፈላጊ ዝርዝር አለ፡ ፕሮግራሙ ማስገባትሁልጊዜ አይሰራም ምክንያቱም እያለመቼ ድርድር በግራ ጠርዝ ላይ መዝለል ይችላል - የድርድር ትንሹ አካል። ሁኔታውን ለማስተካከል የ "ጠባቂ" ቁልፍን በ a ውስጥ እናስቀምጣለን, ይህም ቢያንስ በድርድር ውስጥ ካለው ትንሹ ቁልፍ አይበልጥም. ተጨማሪ ምርመራን ለመከላከል እንደዚህ ባሉ ሁኔታዎች ጠባቂዎች በብዛት ጥቅም ላይ ይውላሉ (በ በዚህ ጉዳይ ላይ > 0), ይህም ሁልጊዜ ማለት ይቻላል ውስጣዊ loops ውስጥ ይረዳል. የአረፋ ዓይነትብዙ ጊዜ የሚሰጠው መሠረታዊ የመለየት ዘዴ የመግቢያ ክፍሎች- ይህ የአረፋ መደርደርያልተደረደሩ ጥንዶች እስካጋጠሙ ድረስ በአጎራባች ድርድር አባሎች ይቀያየራሉ። የዚህ ዘዴ አተገባበር በትክክል እንደሚሰራ ለማመን የተወሰነ ጊዜ ሊወስድ ይችላል. ይህንን ለማድረግ በመጀመሪያ ማለፊያ ወቅት ከፍተኛው አካል ሲያጋጥመን በትክክለኛው ቦታ ላይ እስከሚገኝ ድረስ ከእያንዳንዱ ንጥረ ነገር ጋር በቀኝ በኩል እንለዋውጣለን. በሁለተኛው ማለፊያ ላይ, ሁለተኛውን ከፍተኛውን ኤለመንት በፔንታል ቦታ ላይ እናስቀምጣለን, ወዘተ. የአረፋ መደርደር ልክ እንደ ምርጫ አይነት ይሰራል፣ ምንም እንኳን ብዙ ይሰራል ተጨማሪ ሥራኤለመንቱን ወደ መጨረሻው ቦታ ለማንቀሳቀስ. በጣም ቀላሉ ዓይነቶች ባህሪዎችንብረት 1 ምርጫ ደርድር ስለ ይጠቀማል ንጽጽር እና N ልውውጦች.ንብረት 2የማስገቢያ ዓይነት ስለ ይጠቀማል ማወዳደር እና በአማካይ መለዋወጥ, እና በጣም በከፋ ሁኔታ ውስጥ ሁለት እጥፍ ይበልጣል.ንብረት 3 የአረፋ መደርደር በግምት ይጠቀማል። ማወዳደር እና በአማካኝ እና በከፋ ሁኔታ መለዋወጥ.ንብረት 4 የማስገቢያ ደርድር ለ"የተደረደሩ" ፋይሎች መስመራዊ ነው።ንብረት 5 ትልቅ መዝገቦች እና ትናንሽ ቁልፎች ላሏቸው ፋይሎች የመምረጫ ድርድር መስመራዊ ነው።ፋይሎችን በትላልቅ መዝገቦች መደርደርበጣም ብዙ ጊዜ (እና የሚፈለግ) የ N ኤለመንቶችን ያካተተ ፋይል ሲደረደሩ, ማንኛውንም ዘዴ በመጠቀም, N ልውውጥ ስራዎች ብቻ እንደሚከናወኑ ማረጋገጥ ይቻላል. ሙሉ መዝገብየድርድር ክፍሎችን በተዘዋዋሪ በማንሳት (የመረጃ ጠቋሚዎችን ወይም ጠቋሚዎችን በመጠቀም) እና እራሱን እንደገና ማደራጀት የበለጠ በተለየ ሁኔታ: ድርድር a ትልቅ ግቤቶችን ከያዘ ፣እንግዲህ ለማወቅ የጠቋሚውን ድርድር ፒ መጠቀም እንመርጣለን። የሚቀጥለው የድርድር አካል የሚገኝበት እና የውሸት ልውውጥን ለማከናወን። ከዚህ በታች የጠቋሚዎችን ድርድር በመጠቀም የማስገቢያ መደብ ፕሮግራም አለ፡ በ loop ውስጥ አላስፈላጊ ቁጥጥርን ለመከላከል ፕሮግራሙ እንደገና የ"ሰዓት" ክፍሎችን ይጠቀማል። ከዚያም የኢንዴክሶች ቅደም ተከተል መለወጥ ይጀምራል, ስለዚህም ድርድር a, ኢንዴክሶች በተነበቡበት ቅደም ተከተል እንዲነበብ ይደረጋል.

ለዚህ ልንጠቀምበት እንችላለን የሚከተለው አሰራር N permutations በመጠቀም የፋይሉን መዝገቦች በአካል የሚያዘጋጅ፡-

የሼል ዓይነትየማስገባት አይነት ቀርፋፋ ነው ምክንያቱም አጎራባች አካላትን ብቻ ስለሚለዋወጥ ነው። ሼል ደርድር በጣም ቀላሉ የማስገባት አይነት ነው ፣ ይህም የአልጎሪዝም ፍጥነትን ይጨምራል ምክንያቱም እርስ በእርስ በጣም የራቁ ንጥረ ነገሮችን ለመለዋወጥ የሚያስችልዎት የአልጎሪዝም ዋና ሀሳብ ሁሉንም የ a በርቀት እርስ በርስ የተራራቁ የፋይል አባሎችን የያዘ ፋይል ሸ . እንደነዚህ ያሉ ፋይሎች h-የተደረደሩ ይባላሉ. ፋይሉን በተወሰነ ትልቅ ሸ ስናስተካክለው ክፍሎቹን በትልቅ ርቀት እናንቀሳቅሳለን። ይህ ለአነስተኛ የ h እሴቶች መደርደር ስራን ቀላል ያደርገዋል። h ወደ 1 ሲቀንስ ሂደቱ ያበቃል.

ከላይ ያለው ፕሮግራም ቅደም ተከተል ይጠቀማል ... 1093, 364, 121, 40, 13, 4, 1. ሌሎች ቅደም ተከተሎች ሊኖሩ ይችላሉ - አንዳንዶቹ የተሻሉ, ሌሎች ደግሞ የከፋ.

ንብረት 6የሼል ዓይነት በጭራሽ ከኤን በላይ አያደርግም።1.5 ከላይ ላለው ቅደም ተከተል ማነፃፀር ሸ.

የስርጭት ቆጠራበብዙ አጋጣሚዎች በፋይል ውስጥ ያሉት ቁልፍ እሴቶች በተወሰነ ክልል ውስጥ እንደሚገኙ እናውቃለን። በነዚህ ሁኔታዎች፣ የስርጭት ቆጠራ የሚባል ስልተ ቀመር ተፈጻሚ ይሆናል። የዚህ ቀላል አልጎሪዝም ፕሮግራም ይኸውና.

8 የማስገቢያ ዓይነት


9 A N ወደ ላይ በቅደም ተከተል መደርደር አስፈላጊ ነው, ይህም N ንጥረ ነገሮች የማስገባት ዘዴን በመጠቀም ረዳት ተለዋዋጮች j j የቀረው የመጀመሪያው ንጥረ ነገር ቁጥር ነው. i i - የሚንቀሳቀስ ንጥረ ነገር ቁጥር። f f=1 f - ከሉፕ ለመውጣት ሁኔታ (f=1 ከሆነ ከዚያ ውጣ) ቫል ቫል - የድርድር ክፍሎችን ለማንቀሳቀስ የሚያገለግል የችግር መግለጫ


አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ።" title="10 የስልተ ቀመር መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 A> A [i] ከሆነ ቫል: = A; A: = A [i]; ደረጃ 2.3 ደረጃ 2.3 j:=j+1 የአልጎሪዝም መጨረሻ።" class="link_thumb"> 10 !} 10 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲሰሩ፡ ደረጃ ደረጃ A>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=ቫል፣ አለበለዚያ f:=1፣ ደረጃ i:=i-1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j+1። የአልጎሪዝም መጨረሻ. አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ።"> A[i] ከዚያ Val:=A; A:=A[i]; A[i]:=Val፣ አለበለዚያ f:=1፣ ደረጃ 2.2.2 ደረጃ 2.2.2 i:= i- 1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ።"> A[i] ከዚያ Val:=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ።" title="10 የስልተ ቀመር መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 A> A [i] ከሆነ ቫል: = A; A: = A [i]; ደረጃ 2.3 ደረጃ 2.3 j:=j+1 የአልጎሪዝም መጨረሻ።"> title="10 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከA>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ."> !}


አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ምን ያደርጋል "title="11 የስልተ ቀመር መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A> A[ i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ 2.3 ደረጃ. 2.3 j:=j+1 የአልጎሪዝም መጨረሻ።" class="link_thumb"> 11 !} 11 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲሰሩ፡ ደረጃ ደረጃ A>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=ቫል፣ አለበለዚያ f:=1፣ ደረጃ i:=i-1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j+1። የአልጎሪዝም መጨረሻ. ምን ማለት ነው ይህ ሁኔታ? አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ምን ማለት ነው "> አ[i] ከዚያም ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i- 1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. ይህ ሁኔታ ምን ማለት ነው? አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ምን ያደርጋል "title="11 የስልተ ቀመር መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A> A[ i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ 2.3 ደረጃ. 2.3 j:=j+1 የአልጎሪዝም መጨረሻ።"> title="11 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከA>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ምን ማለት ነው"> !}


አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ለምን ይጀምራል" title="12 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲፈጽሙ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A> A[ i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ 2.3 ደረጃ. 2.3 j:=j+1 የስልተ ቀመር መጨረሻ ለምን ይጀምራል" class="link_thumb"> 12 !} 12 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲሰሩ፡ ደረጃ ደረጃ A>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=ቫል፣ አለበለዚያ f:=1፣ ደረጃ i:=i-1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j+1። የአልጎሪዝም መጨረሻ. ለምንድነው መነሻ ዋጋ j =2? አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ለምን ይጀመራል">A[i] ከዚያ Val:=A; A:=A[i]; A[i]:=Val፣ አለበለዚያ f:=1፣ ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1 , ደረጃ 2.3 ደረጃ 2.3 j:=j+1 የስልተ ቀመር መጨረሻ j =2">A[i] ከዚያ Val:=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ለምን ይጀምራል" title="12 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲፈጽሙ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A> A[ i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ 2.3 ደረጃ. 2.3 j:=j+1 የስልተ ቀመር መጨረሻ ለምን ይጀምራል"> title="12 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከA>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ለምን ይጀምራል"> !}


አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ለምን ይጀምራል" title="13 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲፈጽሙ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A> A[ i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ 2.3 ደረጃ. 2.3 j:=j+1 የስልት መጨረሻ ለምን ይጀምራል" class="link_thumb"> 13 !} 13 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲሰሩ፡ ደረጃ ደረጃ A>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=ቫል፣ አለበለዚያ f:=1፣ ደረጃ i:=i-1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j+1። የአልጎሪዝም መጨረሻ. ለምንድነው መነሻ ዋጋ i =2? አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ለምን ይጀመራል">A[i] ከዚያ Val:=A; A:=A[i]; A[i]:=Val፣ አለበለዚያ f:=1፣ ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1 , ደረጃ 2.3 ደረጃ 2.3 j:=j+1 የስልት መጨረሻ ለምንድነው የመነሻ ዋጋ i =2 ">አ[i] ከዛ Val:=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ለምን ይጀምራል" title="13 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲፈጽሙ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A> A[ i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ 2.3 ደረጃ. 2.3 j:=j+1 የስልት መጨረሻ ለምን ይጀምራል"> title="13 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከA>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ለምን ይጀምራል"> !}


አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ሁልጊዜ እውነት ነው" title="14 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j:=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲፈጽሙ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A>A [i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ. 2.3 ደረጃ 2.3 j:=j+1 የአልጎሪዝም መጨረሻ።" class="link_thumb"> 14 !} 14 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲሰሩ፡ ደረጃ ደረጃ A>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=ቫል፣ አለበለዚያ f:=1፣ ደረጃ i:=i-1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j+1። የአልጎሪዝም መጨረሻ. የግቤት j ኤለመንት ሁልጊዜ ከተደረደረው አካል ጋር ይለዋወጣል? አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ሁልጊዜ "> አ[i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i- 1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j+1 የስልተ ቀመር መጨረሻ። አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ሁልጊዜ እውነት ነው" title="14 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j:=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲፈጽሙ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A>A [i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ. 2.3 ደረጃ 2.3 j:=j+1 የአልጎሪዝም መጨረሻ።"> title="14 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከA>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ሁልጊዜ ይቻላል?"> !}


አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ለ" title="15 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j:=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲሰሩ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A>A [i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ. 2.3 ደረጃ 2.3 j:=j+1 የአልጎሪዝም መጨረሻ።" class="link_thumb"> 15 !} 15 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲሰሩ፡ ደረጃ ደረጃ A>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=ቫል፣ አለበለዚያ f:=1፣ ደረጃ i:=i-1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j+1። የአልጎሪዝም መጨረሻ. BYE እና IF loopን በአንድ BYE loop በሁኔታ i>=2 እና A>A[i] መተካት ይቻላል? አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ለ "> አ[i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i ይቻላል? - 1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1 የአልጎሪዝም መጨረሻ በአንድ BYE loop መተካት ይቻላል i>=2 እና A[i]?> A. [i] ከዚያም ቫል:= A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ለ" title="15 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j:=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲሰሩ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A>A [i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ. 2.3 ደረጃ 2.3 j:=j+1 የአልጎሪዝም መጨረሻ።"> title="15 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከA>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ይቻላል?"> !}


አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ምንድን ነው ለ" title="16 የስልተ ቀመር መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A>A [i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ. 2.3 ደረጃ 2.3 j:=j+1 የአልጎሪዝም መጨረሻ።" class="link_thumb"> 16 !} 16 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲሰሩ፡ ደረጃ ደረጃ A>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=ቫል፣ አለበለዚያ f:=1፣ ደረጃ i:=i-1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j+1። የአልጎሪዝም መጨረሻ. ይህ ኦፕሬተር ለምንድነው? አ[i] ከዚያ ቫል፡=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ምንድን ነው ለ"> አ[i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i - 1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. ይህ ኦፕሬተር ለምንድነው? አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ምንድን ነው ለ" title="16 የስልተ ቀመር መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከሆነ A>A [i] ከዚያ ቫል: = A; A: = A[i]; A[i]: = ቫል, አለበለዚያ f: = 1, ደረጃ 2.2.2 ደረጃ 2.2.2 i: = i-1, ደረጃ. 2.3 ደረጃ 2.3 j:=j+1 የአልጎሪዝም መጨረሻ።"> title="16 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j=2፣ ደረጃ 2 ደረጃ 2 j=2 እና f=0 ሲያደርጉ፡ ደረጃ 2.2.1 ደረጃ 2.2.1 ከA>A[i] ከዚያም Val:=A; አ፡=አ[i]; A[i]:=Val, አለበለዚያ f:=1, ደረጃ 2.2.2 ደረጃ 2.2.2 i:=i-1, ደረጃ 2.3 ደረጃ 2.3 j:=j+1. የአልጎሪዝም መጨረሻ. ምን ያስፈልጋል"> !}




18 የመደርደር ምንነት፡ ንጥረ ነገር ከ ጋር ዝቅተኛው ዋጋእና ከድርድሩ የመጀመሪያ አካል ጋር ይለዋወጣል. ከዚያም ከቀሪዎቹ n-1 ንጥረ ነገሮች ትንሹ እሴት ያለው ንጥረ ነገር ተገኝቶ ከሁለተኛው ኤለመንት ወዘተ ጋር ይለዋወጣል. የመጨረሻዎቹን ሁለት ንጥረ ነገሮች ከመለዋወጥ በፊት.


ምርጫ ደርድር የተደረደረ ክፍል የተደረደረ ክፍል ድርድር በከፍታ ቅደም ተከተል ተደርድሯል።


20 የችግር መግለጫ A N በመውጣት ድርድርን መደርደር ያስፈልግሃል፣ በምርጫም N አካላት አሉ። ረዳት ተለዋዋጮች j j - የቀሪው የመጀመሪያው ንጥረ ነገር ቁጥር. i i - የሚንቀሳቀስ ንጥረ ነገር ቁጥር። ደቂቃ ደቂቃ - በድርድር ውስጥ ያለው ዝቅተኛ ቁጥር። ኢሚን ኢሚን - በአደራደሩ ውስጥ ያለው አነስተኛ ቁጥር ቁጥር










25 የመደርደር ምንነት፡ ድርድር በቅደም ተከተል ይቃኛል እና እያንዳንዱ ጥንድ ንጥረ ነገሮች እርስ በርስ ይነጻጸራሉ። በዚህ ሁኔታ የንጥረ ነገሮች "የተሳሳተ" አቀማመጥ እንደገና በማስተካከል ይወገዳል. አባሎችን የማየት እና የማነፃፀር ሂደት ሙሉው ድርድር እስኪታይ ድረስ ይደጋገማል።


26 በመለዋወጥ መደርደር


27 A N ድርድር A በከፍታ ቅደም ተከተል መደርደር አስፈላጊ ይሁን፣ በዚህ ውስጥ N ንጥረ ነገሮች የመለዋወጫ ዘዴን በመጠቀም የሚለዋወጡበት ረዳት ተለዋዋጮች j j - የቀሪው የመጀመሪያ ክፍል ቁጥር። i i - የሚንቀሳቀስ ንጥረ ነገር ቁጥር። ቫል ቫል የድርድር ክፍሎችን ለማንቀሳቀስ የሚያገለግል መካከለኛ እሴት ነው።


2 አከናውን፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 እያለ iA ከዚያም Val:=A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. የጎረቤቶች ንጽጽር" ርዕስ = "28 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j:=N, ደረጃ 2 ደረጃ 2 j> = 2 ሲያከናውን: ደረጃ 2.1 ደረጃ 2.1 i: = 1;, ደረጃ 2.2 ደረጃ. 2.2 iA ከዚያም Val:= A[i]; A[i]:=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የጎረቤቶች ማነፃፀር" class="link_thumb"> 28 !} 28 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j: = N, ደረጃ 2 ደረጃ 2 j> = 2 ሲያከናውን: ደረጃ 2.1 ደረጃ 2.1 i: = 1;, ደረጃ 2.2 ደረጃ 2.2 ሳለ iA ከዚያም Val: = A[i]; አ[i]::=A; A:=Val, Step Step i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:=j-1. የአልጎሪዝም መጨረሻ. ንጽጽር የጎረቤት አካላትየግራው ከቀኝ የሚበልጥ ከሆነ የአጎራባች ክፍሎችን ይቀያይሩ =2 ማከናወን፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 እያለ iA ከዚያም Val:=A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. ጎረቤቶችን አወዳድር =2 አከናውን፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 iA ከዚያም Val:=A[i]; A[i]:=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j-1 የአጎራባች አካላትን ማነፃፀር የግራው ከትክክለኛው በላይ ከሆነ "> =2 አከናውን፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 እያለ iA ከዚያም Val:=A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. የጎረቤቶች ንጽጽር" ርዕስ = "28 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j:=N, ደረጃ 2 ደረጃ 2 j> = 2 ሲያከናውን: ደረጃ 2.1 ደረጃ 2.1 i: = 1;, ደረጃ 2.2 ደረጃ. 2.2 iA ከዚያም Val:= A[i]; A[i]:=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የጎረቤቶች ማነፃፀር"> title="28 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j: = N, ደረጃ 2 ደረጃ 2 j> = 2 ሲያከናውን: ደረጃ 2.1 ደረጃ 2.1 i: = 1;, ደረጃ 2.2 ደረጃ 2.2 ሳለ iA ከዚያም Val: = A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. የጎረቤቶች ማነፃፀር"> !}


2 አከናውን፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 እያለ iA ከዚያም Val:=A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. ሁኔታው ለምን "ርዕስ = " 29 የአልጎሪዝም መጀመሪያ. ደረጃ 1 ደረጃ 1 j: = N, ደረጃ 2 ደረጃ 2 j> = 2 ሲያከናውን: ደረጃ 2.1 ደረጃ 2.1 i: = 1;, ደረጃ 2.2 ደረጃ 2.2 iA ከዚያም Val: = A[i]; A[i]: = A; A: = Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1 ሁኔታው ለምንድነው?" class="link_thumb"> 29 !} 29 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j: = N, ደረጃ 2 ደረጃ 2 j> = 2 ሲያከናውን: ደረጃ 2.1 ደረጃ 2.1 i: = 1;, ደረጃ 2.2 ደረጃ 2.2 ሳለ iA ከዚያም Val: = A[i]; አ[i]::=A; A:=Val, Step Step i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:=j-1. የአልጎሪዝም መጨረሻ. ይህ ሁኔታ ለምንድነው? =2 ማከናወን፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 እያለ iA ከዚያም Val:=A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. ሁኔታው ለምን ta"> = 2 ተሟልቷል፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 እያለ iA ከዚያም Val:=A[i]; A[i]:=A; A:=Val, Step 2.2.2 ደረጃ 2.2.2 i=i+1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j-1። ደረጃ 2.2 ደረጃ 2.2 ለአሁን iA ከዚያም Val: = A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. ሁኔታው ለምን "ርዕስ = " 29 የአልጎሪዝም መጀመሪያ. ደረጃ 1 ደረጃ 1 j: = N, ደረጃ 2 ደረጃ 2 j> = 2 ሲያከናውን: ደረጃ 2.1 ደረጃ 2.1 i: = 1;, ደረጃ 2.2 ደረጃ 2.2 iA ከዚያም Val: = A[i]; A[i]: = A; A: = Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1 ሁኔታው ለምንድነው?"> title="29 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j: = N, ደረጃ 2 ደረጃ 2 j> = 2 ሲያከናውን: ደረጃ 2.1 ደረጃ 2.1 i: = 1;, ደረጃ 2.2 ደረጃ 2.2 ሳለ iA ከዚያም Val: = A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. ሁኔታው ለምን ተመሳሳይ ነው?"> !}


2 አከናውን፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 እያለ iA ከዚያም Val:=A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. ለምን እሴቱ j" title="30 የአልጎሪዝም መጀመሪያ ነው። ደረጃ 1 ደረጃ 1 j:=N፣ ደረጃ 2 ደረጃ 2 j>=2 ሲያከናውን፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 iA ከዚያም Val: = A[i]; A[i]: = A; A: = ቫል, ደረጃ 2.2.2 ደረጃ 2.2.2 i = i +1, ደረጃ 2.3 ደረጃ 2.3 j: = j- 1. ለምን j ዋጋ" class="link_thumb"> 30 !} 30 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j: = N, ደረጃ 2 ደረጃ 2 j> = 2 ሲያከናውን: ደረጃ 2.1 ደረጃ 2.1 i: = 1;, ደረጃ 2.2 ደረጃ 2.2 ሳለ iA ከዚያም Val: = A[i]; አ[i]::=A; A:=Val, Step Step i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:=j-1. የአልጎሪዝም መጨረሻ. የ j ዋጋ ለምን ይቀንሳል? እሱን መጨመር ይቻላል? ምን መለወጥ አለበት? =2 ማከናወን፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 እያለ iA ከዚያም Val:=A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. ለምን እሴቱ j"> =2 ይከናወናል፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 iA በመቀጠል Val:=A[i]; A[i]:=A; A:=Val, Step 2.2.2 ደረጃ 2.2.2 i=i+1፣ ደረጃ 2.3 ደረጃ 2.3 j:=j-1 2.1 ደረጃ 2.1 i: =1;, ደረጃ 2.2 ደረጃ 2.2 ሳለ iA ከዚያም Val: = A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. ለምን እሴቱ j" title="30 የአልጎሪዝም መጀመሪያ ነው። ደረጃ 1 ደረጃ 1 j:=N፣ ደረጃ 2 ደረጃ 2 j>=2 ሲያከናውን፡ ደረጃ 2.1 ደረጃ 2.1 i:=1;, ደረጃ 2.2 ደረጃ 2.2 iA ከዚያም Val: = A[i]; A[i]: = A; A: = ቫል, ደረጃ 2.2.2 ደረጃ 2.2.2 i = i +1, ደረጃ 2.3 ደረጃ 2.3 j: = j- 1. ለምን j ዋጋ"> title="30 የአልጎሪዝም መጀመሪያ። ደረጃ 1 ደረጃ 1 j: = N, ደረጃ 2 ደረጃ 2 j> = 2 ሲያከናውን: ደረጃ 2.1 ደረጃ 2.1 i: = 1;, ደረጃ 2.2 ደረጃ 2.2 ሳለ iA ከዚያም Val: = A[i]; አ[i]::=A; A:=Val, ደረጃ 2.2.2 ደረጃ 2.2.2 i=i+1, ደረጃ 2.3 ደረጃ 2.3 j:= j-1. የአልጎሪዝም መጨረሻ. ለምን j ዋጋ ነው"> !}










35 12 የሼል መደርደር ደረጃ. የ 2 ንጥረ ነገሮች ደረጃ 4 ቡድኖች። 2 ቡድኖች 4 ንጥረ ነገሮች


36 የሼል መደርደር ደረጃ. 1 ቡድን 8 አባላት ያሉት አደራደር በከፍታ ቅደም ተከተል ተደርድሯል።


37 A N የሼል ዘዴን በመጠቀም ኤን ኤለመንቶች ባሉበት ወደ ላይ በቅደም ተከተል መደርደር አስፈላጊ ነው j j የቀረው የመጀመሪያው ንጥረ ነገር ቁጥር ነው። i i - የሚንቀሳቀስ ንጥረ ነገር ቁጥር። M M- ምርጥ ደረጃ P P - የድርድር ክፍሎችን ለማንቀሳቀስ የሚያገለግል መካከለኛ እሴት የችግር መግለጫ














45 የመደርደር ምንነት፡- የተወሰነ እሴት (x) ተመርጧል - ማገጃ ኤለመንት በ 2 የተደረደሩትን ንጥረ ነገሮች ብዛት ወደ ኢንቲጀር ክፍፍል በማዞር የሚወሰን ነው። ከግራ ወደ ቀኝ እየተንቀሳቀስን ከ x የሚበልጥ አካል እስክናገኝ ድረስ ከቀኝ ወደ ግራ እናዞራለን።


46 የመደርደር ዋናው ነገር፡ የተገኙትን ንጥረ ነገሮች ይቀይሩ። ትልቁ ወይም ትንሹ ንጥረ ነገር ካልተገኘ, መካከለኛው አካል ከተገኘው ትልቁ ወይም ትንሹ አካል ጋር ይለዋወጣል; መሃል ላይ ከደረስን በኋላ የድርድር 2 ክፍሎች አሉን; አደራደሩ እስኪደረደር ድረስ ሂደቱ ለእያንዳንዱ ክፍል ይቀጥላል


7 ተላልፏል በቀኝ በኩል, 16>7 ስለማይተላለፍ 47 ወደ ቀኝ በኩል ስለሚተላለፍ 16>7, 8>7,11>7, 19>7 አይተላለፍም, 7=7 ገጣሚ" title="(!LANG :47) ፈጣን ደርድር 812371911416 ባሪየር ኤለመንት 4378123 4 Barrier element 8121119 Barrier element 1219 1619 8>7 ወደ ቀኝ በኩል ስለሚዛወር 16>7 ስለማይተላለፍ 47 ወደ ቀኝ ይንቀሳቀሳል ምክንያቱም 16>7፣18> >7፣ 19>7 የማይታገሥ፣ 7=7 ገጣሚ" class="link_thumb"> 47 !} 47 ፈጣን መደርደር Barrier element Barrier element Barrier element >7 ወደ ቀኝ በኩል ይንቀሳቀሳል፣ ምክንያቱም 16>7 ስለማይተላለፍ፣ 47 ወደ ቀኝ ይንቀሳቀሳል፣ ምክንያቱም 16>7፣ 8>7፣11>7፣ 19> 7 አይተላለፍም, 7=7 ስለዚህ 7 እና 12 4>3 የተደረደሩት ክፍል 12>11 ወደ ቀኝ በኩል ስለሚዛወሩ>11 ስለማይተላለፍ 811 ወደ ቀኝ በኩል ተላልፏል, ከ 16>11, 12 ጀምሮ. >11፣የማይተላለፍ፣ 11 11=11 ስለዚህ 11 እና 19 እንለዋወጣለን። ድርድር በከፍታ ቅደም ተከተል ተደርድሯል ከ 7 ያነሰ ከ 7 ይበልጣል 7 ወደ ቀኝ በኩል እናንቀሳቅሳለን, ምክንያቱም 16>7 አይተላለፍም, 47 ወደ ቀኝ ይዛወራሉ, ምክንያቱም 16>7, 8>7,11>7, 19>7 አይተላለፍም, 7=7 ገጣሚ"> 7 ወደ ቀኝ በኩል እናንቀሳቅሳለን, ምክንያቱም 16> 7 አይተላለፍም, 47 ወደ ቀኝ በኩል ይዛወራሉ, ምክንያቱም 16>7, 8>7,11>7, 19>7 አይተላለፍም, 7=7 ስለዚህ እኛ ስዋፕ ቦታዎች 7 እና 12 4>3 የተደረደሩት ክፍል 12>11 ወደ ቀኝ በኩል ተላልፏል ምክንያቱም 8 12 16>11 አይተላለፍም, 811 ወደ ቀኝ በኩል ስለሚተላለፍ 16>11, 12>11 አይተላለፍም. , 11 11=11 ስለዚህ 11 እና 19 እንለዋወጣለን የተደረደሩት ክፍል 19>12 ወደ ቀኝ በኩል ስለሚዘዋወር 16>12 ስለማይተላለፍ 12 12=12 ስለዚህ 12 እና 19 19>16 ድርድር ተቀይሯል የአስከሬንጅ ትዕዛዝ ከ 7 ያነሰ ከ 7 ይበልጣል"> 7 ወደ ቀኝ በኩል ተላልፏል፣ 16>7 ስለማይተላለፍ፣ 47 ወደ ቀኝ በኩል ተላልፏል፣ ከ16>7፣ 8>7፣11>7፣ 19>7 ጀምሮ ማስተላለፍ አይቻልም፣ 7=7 ገጣሚ" title="47 Quick sort 812371911416 Barrier element 4378123 4 Barrier element 8121119 Barrier element 1219 1619 8>7 ወደ ቀኝ በኩል ስለሚዛወር 16>47 ስለማይተላለፍ ወደ ቀኝ ይንቀሳቀሳል, ምክንያቱም 16>7, 8> 7, 11> 7, 19>7 ሊታገሱ አይችሉም, 7=7 ገጣሚ"> title="47 ፈጣን ደርድር 812371911416 ባሪየር ኤለመንት 4378123 11>7፣ 19>7 የማይታገሥ፣ 7=7 ገጣሚ"> !}


48 A n ኤለመንቶች ባሉበት ወደ ላይ በሚወጣ ቅደም ተከተል መደርደር ያስፈልግዎታል ፈጣን ዘዴረዳት ተለዋዋጮች፡ t – t – የመጨረሻው አካልድርድር m - m የድርድር የመጀመሪያ ኤለመንት ነው x – x ሁሉም ሌሎች ንጥረ ነገሮች የሚንቀሳቀሱበት አንፃራዊ አካል ነው። w – w – የድርድር ክፍሎችን ለማንቀሳቀስ የሚያገለግል መካከለኛ እሴት የችግር መግለጫ
















58 መረጋጋት - የተደረደሩ ድርድር የንጥረ ነገሮችን ቅደም ተከተል ከ አይለውጥም ተመሳሳይ እሴቶች. የእኩል ኤለመንቶች አንጻራዊ አቀማመጥ ከቁልፍ 1 እና ተጨማሪ መስኮች"a", "b", "c" የአልጎሪዝም ግምገማ መለኪያዎች


59 የባህሪ ተፈጥሯዊነት - አስቀድሞ የተደረደሩ ወይም በከፊል የተደረደሩ መረጃዎችን በሚሰራበት ጊዜ ዘዴው ውጤታማነት. ይህን የግቤት ቅደም ተከተል ባህሪን ከግምት ውስጥ ካስገባ እና የሚሰራ ከሆነ ስልተ ቀመሩ በተፈጥሮ ባህሪይ ነው። የተሻሉ መለኪያዎችአልጎሪዝም ግምገማዎች


60 የምርጫው ዓይነት ስልተ-ቀመር ግምገማ ጠቅላላ የንጽጽሮች ብዛት C = N-l + N = (N 2 -N)/2 ጠቅላላ የክዋኔዎች ብዛት n + (n-1) + (n-2) + (n-3) = 1 /2 * ( n 2 +n) = ቴታ (n 2) የመለዋወጫዎች ብዛት


63 የማስገቢያ ደርድር አልጎሪዝምን መገምገም ድርድር N-1 ንጽጽሮችን ይፈልጋል። ድርድር (N 2 -N)/2 ንጽጽር ያስፈልገዋል። ጠቅላላ የቴታ ስራዎች ብዛት(n 2)


66 አይደለም ውጤታማ ዘዴ, አንድ ኤለመንት ማካተት ቀደም ሲል የነበሩትን ሁሉንም ንጥረ ነገሮች በአንድ ቦታ ከመቀየር ጋር የተቆራኘ ስለሆነ እና ይህ ክዋኔ አንድ ላይ ተወስዶ, መረጋጋት እና ተፈጥሯዊ ባህሪው ዘዴውን ያደርገዋል ጥሩ ምርጫበተገቢው ሁኔታዎች ውስጥ




70 ቀላል የመደርደር ዘዴዎችን ማነፃፀር N N - የንጥረ ነገሮች ብዛት ፣ M M - የዝውውሮች ብዛት ፣ C - የንፅፅር ብዛት ዝቅተኛው ከፍተኛ ቀላል ማካተቶች M=2(n-1) C = n-1 M=2(n-1) C=( n 2 -n)/2 М=(n+3n-4)/2 М=(n 2 +3n-4)/2 ቀላል ልውውጥ C=(n 2 -n)/2M=3(n-1) С = (n 2 -n)/2 М=n/4+3(n-1) М=n 2/4+3(n-1) ቀላል ምርጫ C=(n 2 -n)/2 M = 0 С = (n 2 -n)/2 М=(n-n)*1.5 ኤም=(n 2 -n)*1.5? የዝውውር ብዛት ምን ያህል ይሆናል?




72 የሼል አልጎሪዝም ግምገማ n 1.2 እያንዳንዱ ማለፊያ ስለሚጠቀም የማስፈጸሚያ ጊዜ ከ n 1.2 ጋር ተመጣጣኝ ነው። አነስተኛ ቁጥርኤለመንቶች ወይም የድርድር አባሎች ቀድሞውኑ በአንፃራዊ ቅደም ተከተል ላይ ናቸው፣ እና በእያንዳንዱ አዲስ የውሂብ እይታ ትዕዛዙ ይጨምራል


73 የQuicksort Algorithm N=2g X N N/2N/2 መገምገም የድርድር መጠኑ የሁለት ቁጥሮች ሃይል ከሆነ (N=2g) እና እያንዳንዱ የተከፈለው ኤለመንቱን X በትክክል በድርድር መሃል ላይ ያስቀምጣል፣ ከዚያም በመጀመሪያው እይታ ላይ , N ንጽጽሮች ተደርገዋል እና አደራደሩ N/2 የሚለካው በሁለት ክፍሎች የተከፈለ ነው. ለእያንዳንዳቸው እነዚህ ክፍሎች N/2 ንፅፅር ወዘተ አሉ ስለዚህም C=N+2*(N/2)+4*(N/4)+...+N*(N/N)። N የሁለት ኃይል ካልሆነ, ግምቱ ተመሳሳይ ቅደም ተከተል ይሆናል


74 ቴታ (n)። የቴታ(n) ስራዎች ጠቅላላ ብዛት። log n O(n log n) ድርድር ወደ ብዙ ወይም ባነሰ እኩል ክፍሎች ከተከፋፈለ የማካፈል ደረጃዎች ብዛት (የድግግሞሽ ጥልቀት) በግምት log n ነው። ስለዚህ አጠቃላይ አፈፃፀሙ፡ O(n log n) O(n 2) በእያንዳንዱ ጊዜ ከፍተኛው ወይም ዝቅተኛው የግቤት ቅደም ተከተል እንደ ማዕከላዊ አካል ከተመረጠ አፈፃፀሙ O(n 2) ነው።






77 ጥያቄዎችን ይቆጣጠሩ? "መደርደር" ምንድን ነው? ? የመምረጫ ዘዴው ምንድን ነው? ? የማስገቢያ የመደርደር ዘዴ ምንድን ነው? ? የአረፋ መደርደር ዘዴ ምንድን ነው? ? ፈጣን የመደርደር ዘዴ ምንድን ነው? ? የሼል መደርደር ዘዴ ምንድን ነው?


78 የፈተና ጥያቄዎች? የትኛው የመደርደር ስልተ ቀመር በጣም ቀላል ነው ተብሎ ይታሰባል? ? የትኛው የመደርደር ስልተ ቀመር በጣም ውጤታማ ነው ተብሎ ይታሰባል? ? ምን ያህል ቡድኖች የመደርደር ስልተ ቀመሮች አሉ? ? አልጎሪዝም መደርደር በምን መስፈርት ነው የሚታወቀው? ? የመደርደር ስልተ ቀመር በሚመርጡበት ጊዜ ምን ግምት ውስጥ ማስገባት አለብዎት?

በጣም ፈጣኑ ዘዴ ብቻ አይደለም, በተጨማሪም, በጣም ቀርፋፋ የማዘዣ ዘዴዎችን ዝርዝር ይዘጋል. ሆኖም, እሱ ደግሞ የራሱ ጥቅሞች አሉት. ስለዚህ, የአረፋ መደርደር ንጥረ ነገሮችን በተወሰነ ቅደም ተከተል ማዘጋጀት ካስፈለገ ለችግሩ በጣም ምክንያታዊ እና ተፈጥሯዊ መፍትሄ ነው. ተራ ሰውበእጅ ፣ ለምሳሌ ፣ በትክክል ይጠቀማል - በቀላሉ በእውቀት።

እንደዚህ ያለ ያልተለመደ ስም የመጣው ከየት ነው?

የስልቱ ስም የተፈጠረው በውሃ ውስጥ ከሚገኙ የአየር አረፋዎች ጋር ተመሳሳይነት በመጠቀም ነው። ይህ ዘይቤ ነው። ልክ ትናንሽ የአየር አረፋዎች ወደ ላይ ይወጣሉ - ከሁሉም በላይ, መጠናቸው ከማንኛውም ፈሳሽ (በዚህ ሁኔታ, ውሃ) ይበልጣል, ስለዚህ የድርድር እያንዳንዱ ንጥረ ነገር, ዋጋው አነስተኛ ነው, ቀስ በቀስ የራሱን ያደርገዋል. ወደ የቁጥሮች ዝርዝር መጀመሪያ መንገድ።

የአልጎሪዝም መግለጫ

የአረፋ መደርደር እንደሚከተለው ይሰራል

  • የመጀመሪያ ማለፊያ፡ የቁጥሮች ድርድር አካላት በአንድ ጊዜ ሁለት ይወሰዳሉ እና እንዲሁም በጥንድ ይነጻጸራሉ። በአንዳንድ ጥንድ ንጥረ ነገሮች ውስጥ የመጀመሪያው እሴት ከሁለተኛው የሚበልጥ ከሆነ ፕሮግራሙ ይቀይራቸዋል.
  • ስለዚህ በድርድሩ መጨረሻ ላይ ያበቃል. ሁሉም ሌሎች ንጥረ ነገሮች እንደነበሩ ሲቀሩ, በተዘበራረቀ ቅደም ተከተል እና ተጨማሪ መደርደር ያስፈልገዋል;
  • ለዚያም ነው ሁለተኛ ማለፊያ አስፈላጊ የሆነው - የሚከናወነው ከቀዳሚው ጋር በማነፃፀር ነው (ቀድሞውኑ የተገለጸው) እና የንፅፅር ብዛት አለው - አንድ ሲቀነስ;
  • የመተላለፊያ ቁጥር ሶስት ከሁለተኛው አንድ ያነሰ ንፅፅር አለው, እና ከመጀመሪያው ሁለት ያነሰ ነው. እናም ይቀጥላል፤
  • እያንዳንዱ ማለፊያ ምን እንዳለው ጠቅለል አድርገን እንይ (በድርድር ውስጥ ያሉ አጠቃላይ እሴቶች፣ የተወሰነ ቁጥር) መቀነስ (የማለፊያ ቁጥር) ንፅፅር።

ይበልጥ አጭር ስልተ ቀመር የወደፊት ፕሮግራምእንደሚከተለው ሊጻፍ ይችላል፡-

  • ሁለት ቁጥሮች እስኪገኙ ድረስ የቁጥሮች ድርድር ይጣራል, እና ሁለተኛው ከመጀመሪያው የበለጠ መሆን አለበት.
  • ፕሮግራሙ እርስ በርስ በተዛመደ በስህተት የተቀመጡ የድርድር ክፍሎችን ይለዋወጣል።

በተገለጸው ስልተ ቀመር ላይ የተመሰረተ የውሸት ኮድ

በጣም ቀላል ትግበራእንዲህ ተከናውኗል፡-

አሰራር Sortirovka_Puzirkom;

ጀምር

loop ለ የመጀመሪያ_ኢንዴክስከዚህ በፊት konechii_index;

loop ለ እኔየመጀመሪያ_ኢንዴክስከዚህ በፊት konechii_index-1;

ከሆነ massiv[i]>ማሲቭ

(እሴቶቹን መለዋወጥ);

መጨረሻ

እርግጥ ነው፣ እዚህ ላይ ቀላልነት ሁኔታውን ያባብሰዋል፡ ከ ቀላል አልጎሪዝም, በተለይም ሁሉም ድክመቶች በእሱ ውስጥ ስለሚታዩ. የጊዜ ፍጆታው ለትንሽ ድርድር እንኳን በጣም ትልቅ ነው (አንፃራዊነት እዚህ ላይ ይጫወታል፡ ለአማካይ ሰው የሰዓቱ መጠን ትንሽ ሊመስል ይችላል ነገር ግን በፕሮግራም ሰሪ ንግድ ውስጥ በየሰከንዱ ወይም በሚሊሰከንድ ይቆጠራል)።

የተሻለ ትግበራ ያስፈልግ ነበር። ለምሳሌ በድርድር ውስጥ የእሴቶችን መለዋወጥ ግምት ውስጥ በማስገባት፡-

አሰራር Sortirovka_Puzirkom;

ጀምር

sortirovka = እውነት;

እስካሁን ድረስ ዑደት sortirovka = እውነት;

sortirovka = ሐሰት;

loop ለ እኔየመጀመሪያ_ኢንዴክስከዚህ በፊት konechii_index-1;

ከሆነ massiv[i]>ማሲቭ(የመጀመሪያው አካል ከሁለተኛው ይበልጣል)፣ ከዚያ፡-

(ኤለመንቶችን መለዋወጥ);

sortirovka = እውነት; (ልውውጡ መደረጉን አመልክቷል).

መጨረሻ።

ዘዴው ጉዳቶች

ዋናው ጉዳቱ የሂደቱ ቆይታ ነው. አረፋ ለመሥራት ምን ያህል ጊዜ ይወስዳል?

የማስፈጸሚያ ጊዜ በድርድሩ ውስጥ ካለው የቁጥሮች ብዛት ካሬ ይሰላል - የመጨረሻው ውጤት ከእሱ ጋር ተመጣጣኝ ነው.

በጣም በከፋ ሁኔታ ውስጥ፣ ድርድር አንድ እሴት ሲቀነስ በውስጡ ንጥረ ነገሮች እንዳሉበት በተመሳሳይ ቁጥር ይሻገራሉ። ይህ የሆነበት ምክንያት ውሎ አድሮ ምንም የማይነፃፀር አንድ አካል ብቻ ስለሚቀር እና በድርድር ውስጥ የመጨረሻው ማለፍ የማይጠቅም ተግባር ይሆናል።

በተጨማሪም የመደርደር ዘዴ ውጤታማ ነው ቀላል ልውውጦች, ተብሎም እንደሚጠራው, ለድርድር ብቻ ነው አነስተኛ መጠን. በእሱ እርዳታ ከፍተኛ መጠን ያለው መረጃን ማካሄድ አይቻልም: ውጤቱም ስህተቶች ወይም የፕሮግራም ውድቀት ይሆናል.

ጥቅሞች

የአረፋ ዓይነት ለመረዳት በጣም ቀላል ነው። ውስጥ ትምህርታዊ ፕሮግራሞችየቴክኒክ ዩኒቨርሲቲዎች የድርድር ክፍሎችን ቅደም ተከተል ሲያጠኑ መጀመሪያ ይወስዳሉ. ዘዴው በሁለቱም በቋንቋ በቀላሉ ይተገበራል ዴልፊ ፕሮግራሚንግ(ዲ (ዴልፊ) እና ሲ/ሲ++ (ሲ/ሲ ፕላስ ፕላስ)፣ ዋጋዎችን በትክክለኛው ቅደም ተከተል ለማደራጀት በሚያስደንቅ ሁኔታ ቀላል አልጎሪዝም እና አረፋ ደርድር ለጀማሪዎች ተስማሚ ነው።

በእሱ ድክመቶች ምክንያት, አልጎሪዝም ከመደበኛ ትምህርት ውጭ ለሆኑ ዓላማዎች ጥቅም ላይ አይውልም.

የእይታ መደርደር መርህ

የድርድር የመጀመሪያ እይታ 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

በፓስካል ውስጥ የአረፋ መደርደር ምሳሌ

ለምሳሌ፥

const kol_mas=10;

var array: የኢንቲጀር ድርድር;

a, b, k: ኢንቲጀር;

መጻፊያ ("ግቤት", kol_mas, "የአደራደር አካላት");

ለ:=1 ለ kol_mas do readln(array[a]);

ለ:=1 ወደ kol_mas-1 ይጀምራል

ለ b:=a+1 ወደ kol_mas ይጀምራል

massiv[a]>massiv[b] ከሆነ ከዚያ ይጀምሩ

k:=ድርድር[a]; massiv[a]:=massiv[b]; አደራደር[b]:=k;

መጨረሻ;

መጻፍ ("በኋላ ዓይነት");

ለ:=1 ለ kol_mas do writeln(massiv[a]);

በ C ቋንቋ የአረፋ መደርደር ምሳሌ

#ያካትቱ

#ያካትቱ

int ዋና (int argc፣ char* argv)

int massiv = (36, 697, 73, 82, 68, 12, 183, 88), i, ff;

ለ (;;)(

ff = 0;

ለ (i = 7፤ i>0፤ i--)(

ከሆነ (ድርድር[i]< massiv) {

ስዋፕ (ድርድር[i]፣massiv);

(ff == 0) ከተሰበረ;

ጌች (); // የማያ ገጽ መዘግየት