កុំព្យូទ័រ, ការសរសេរកម្មវិធី
តម្រៀបបច្ចេកទេសក្នុងការសរសេរកម្មវិធី: តម្រៀប "ពពុះ"
ប្រភេទពពុះមិនត្រូវបានចាត់ទុកតែមួយគត់ដើម្បីជាវិធីសាស្រ្តលឿនបំផុតលើសពីនេះទៅទៀតវាបិទបញ្ជីនៃវិធីយឺតបំផុតដើម្បីរៀបចំ។ ទោះជាយ៉ាងណា, វាមានគុណសម្បត្តិរបស់ខ្លួន។ ដូច្នេះវិធីសាស្រ្តនៃការតម្រៀបពពុះ - ច្រើនបំផុតដែលមិនថាជាដំណោះស្រាយធម្មជាតិនិងឡូជីខលទៅនឹងបញ្ហានេះ, ប្រសិនបើអ្នកចង់បានដើម្បីរៀបចំឱ្យមានធាតុនៅក្នុងលំដាប់ជាក់លាក់មួយ។ ជាមនុស្សសាមញ្ញដោយដៃ, ឧទាហរណ៍វានឹងប្រើពួកវា - គ្រាន់តែដោយវិចារណញាណ។
ដែលជាកន្លែងដែលបានធ្វើបែបនេះឈ្មោះមិនធម្មតាមួយ?
ឈ្មោះវិធីសាស្រ្តមកឡើងដោយប្រើភាពស្រដៀងនៃការពពុះខ្យល់នៅក្នុងទឹក។ វាជាពាក្យប្រៀបធៀបមួយ។ គ្រាន់តែដូចជាពពុះខ្យល់តិចតួចកើនឡើងឡើង - ដោយសារតែដង់ស៊ីតេរបស់ខ្លួនគឺច្រើនជាងសារធាតុរាវមួយ (ក្នុងករណីនេះ - ទឹក) និងធាតុអារេគ្នា, មានទំហំតូចដែលវាគឺជាតម្លៃជាវិធីបន្តិចម្តងបន្ថែមទៀតដើម្បីកំពូលនៃចំនួនបញ្ជី។
ការរៀបរាប់នៃក្បួនដោះស្រាយ
ប្រភេទពពុះគឺត្រូវបានអនុវត្តដូចខាងក្រោម:
- ដំណាក់កាលដំបូង: ធាតុនៃលេខអារេត្រូវបានយកដោយគូពីរនាក់និងបានប្រៀបធៀបផងដែរ។ ប្រសិនបើធាតុមួយចំនួននៃក្រុមទាំងពីរបុរសម្នាក់ជាលើកដំបូងគឺមានតម្លៃធំជាងទីពីរដែលកម្មវិធីនេះធ្វើឱ្យពួកគេផ្លាស់ប្តូរទីកន្លែង!
- លទ្ធផល, ចំនួនធំបំផុតនៃការ បាត់ចុងបញ្ចប់នៃអារេនេះ។ ខណៈពេលដែលធាតុផ្សេងទៀតទាំងអស់នៅតែដូចដែលពួកគេត្រូវបានគេ, នៅក្នុងលក្ខណៈវឹកវរមួយ, និងទាមទារឱ្យមានការតម្រៀបច្រើនទៀត!
- ហេតុដូច្នេះហើយតម្រូវឱ្យមានការបញ្ជូនជាលើកទីពីរ: វាត្រូវបានធ្វើឡើងដោយស្រដៀងគ្នាជាមួយនឹងមុន (បានរៀបរាប់រួចទៅហើយ) និងមានចំនួននៃការប្រៀបធៀប - ដកមួយ;
- នៅលេខអនុម័តប្រៀបធៀបបីគឺមួយតិចជាងលើកទីពីរនិងពីរនាក់ជាជាងជាលើកដំបូង។ និងដូច្នេះនៅលើ;
- សង្ខេបថាការអនុម័តគ្នាមាន (តម្លៃទាំងអស់នៅក្នុងអារេលេខពិសេស) ដក (ចំនួនអនុម័ត) ការប្រៀបធៀប។
ក្បួនដោះស្រាយសូម្បីតែខ្លីនៃកម្មវិធីមួយដែលអាចត្រូវបានសរសេរជា:
- អារេនៃចំនួនមួយដែលត្រូវបានគូសធីកដែលវែងដូចដែលលេខពីរត្រូវបានរកឃើញជាលើកទីពីររបស់ពួកគេត្រូវបានចងទៅជាធំជាងដំបូង;
- ដាក់ទីតាំងមិនត្រឹមត្រូវនៅក្នុងការទាក់ទងនឹងធាតុផ្សេងទៀតនៃគ្នាដោះដូរផ្នែកទន់អារេបាន។
Pseudocode លើក្បួនដោះស្រាយមានមូលដ្ឋានរៀបរាប់
ការអនុវត្តន៍សាមញ្ញបំផុតគឺត្រូវអនុវត្តដូចខាងក្រោម:
នីតិវិធី Sortirovka_Puzirkom;
ការចាប់ផ្តើម
វដ្តសម្រាប់ j ពី nachalnii_index ទៅ konechii_index;
វដ្តសម្រាប់ខ្ញុំពី nachalnii_index ទៅ konechii_index-1;
ប្រសិនបើការធំ [i]> ធំ [i + 1] (ធាតុដំបូងធំជាងលើកទីពីរមួយ), បន្ទាប់មក:
(ការផ្លាស់ប្តូរដាក់តម្លៃ);
ចុងបញ្ចប់
ជាការពិតណាស់ភាពសាមញ្ញនេះ aggravates តែស្ថានភាពនេះ: ការងាយស្រួលក្បួនដោះស្រាយច្រើនវាបង្ហាញរាងគុណវិបត្តិទាំងអស់។ សមាមាត្រនៃការពេលវេលាគឺជាការវិនិយោគផងដែរសូម្បីតែខ្លាំងមានអារេតូចមួយ (នៅទីនេះបានមកនៅក្នុងការពាក់ព័ន្ធ: ចំនួនទឹកប្រាក់នៃការពេលវេលាសម្រាប់ layman នេះអាចហាក់ដូចជាតូច, ប៉ុន្តែនៅក្នុងការពិតអ្នកសរសេរកម្មវិធីគ្រប់វិនាទីឬមួយសូម្បីតែចំនួនមិល្លីវិនាទី) ។
វាបាននាំការអនុវត្តន៍ល្អប្រសើរជាងមុន។ ឧទាហរណ៍យកទៅក្នុងគណនីការផ្លាស់ប្តូរនៃតម្លៃក្នុងទីតាំងអារេ:
នីតិវិធី Sortirovka_Puzirkom;
ការចាប់ផ្តើម
sortirovka = ពិត;
វដ្តនៃការរហូតដល់ sortirovka = ពិត;
sortirovka = មិនពិត!
វដ្តសម្រាប់ខ្ញុំពី nachalnii_index ទៅ konechii_index-1;
ប្រសិនបើការធំ [i]> ធំ [i + 1] (ធាតុដំបូងធំជាងលើកទីពីរមួយ), បន្ទាប់មក:
(ផ្លាស់ប្តូរកន្លែងធាតុ);
sortirovka = ពិត; (កំណត់អត្តសញ្ញាណថាការផ្លាស់ប្តូរនេះត្រូវបានធ្វើឡើង) ។
បញ្ចប់។
ដែនកំណត់
ការគុណវិបត្តិចម្បង - រយៈពេលនៃដំណើរការនេះ។ របៀបដែលពេលវេលាជាច្រើនត្រូវបានសម្តែង ការតម្រៀបក្បួនដោះស្រាយ ពពុះ?
អ្នកដឹកនាំការពេលវេលាដែលត្រូវបានគណនាពីចំនួននៃលេខការ៉េក្នុងអារេ - លទ្ធផលចុងបញ្ចប់របស់វាគឺសមាមាត្រ។
ប្រសិនបើមានករណីធ្ងន់ធ្ងរអារេត្រូវបានអនុម័តជាច្រើនដងតាមដែលវាមានធាតុដកតម្លៃមួយ។ រឿងនេះកើតឡើងដោយសារតែនៅទីបញ្ចប់គឺមានធាតុតែមួយគត់ដែលមិនមានអ្វីដើម្បីប្រៀបធៀបនិងដំណាក់កាលចុងក្រោយនេះតាមរយៈការអារេបានក្លាយទៅជាសកម្មភាពគ្មានប្រយោជន៍។
លើសពីនេះទៀតវិធីសាស្រ្តមានប្រសិទ្ធិភាពនៃការតម្រៀបមួយការផ្លាស់ប្តូរសាមញ្ញ, ដូចដែលវាត្រូវបានហៅសម្រាប់តែអារេនៃទំហំតូច។ បរិមាណធំនៃទិន្នន័យដោយមានជំនួយពីដំណើរការនេះនឹងមិនធ្វើការ: លទ្ធផលនេះនឹងត្រូវបានទាំងកំហុសមួយឬបរាជ័យនៃកម្មវិធីនេះ។
សេចក្តីថ្លៃថ្នូរ
ប្រភេទពពុះគឺជាការងាយស្រួលក្នុងការយល់ខ្លាំងណាស់។ សាកលវិទ្យាល័យបច្ចេកទេសកម្មវិធីសិក្សានៅក្នុងការសិក្សានៃធាតុនៃអារេលំដាប់របស់ខ្លួនដែលបានអនុម័តនៅកន្លែងដំបូង។ វិធីសាស្រ្តនេះគឺជាការងាយស្រួលក្នុងការអនុវត្តទាំងពីរភាសាបាន Delphi សរសេរកម្មវិធី (ឆ្វេង (Delphi) និង C / C ++ (C / C បូកបូក) ដែលជាតម្លៃសាមញ្ញមិនគួរឱ្យជឿនៃក្បួនដោះស្រាយទីតាំងនៅក្នុងលំដាប់ខាងស្ដាំនិងនៅ លោក Pascal (Pascal) ។ ប្រភេទពពុះគឺល្អសម្រាប់អ្នកចាប់ផ្តើមដំបូង។
ដោយសារតែគុណវិបត្តិនៃក្បួនដោះស្រាយមិនត្រូវបានប្រើក្នុងគោលបំណងក្រៅ។
គោលការណ៍តម្រៀបដែលមើលឃើញ
ទិដ្ឋភាពដំបូងនៃអារេ 8 22 74 44 37 4 1 7
ជំហានទី 1 8 22 74 44 37 4 1 7
8 74 44 22 4 1 37 7
8 22 4 1 44 37 74 7
8 4 1 74 22 44 37 7
8 1 4 74 22 44 37 7
8 1 22 4 74 44 37 7
1 8 22 4 74 44 37 7
ជំហានទី 2 1 8 22 74 44 7 4 37
1 8 22 4 44 37 74 7
1 8 22 4 7 74 44 37
1 8 22 4 7 74 44 37
1 8 4 22 74 44 37 7
ទី 1 4 8 22 74 44 37 7
ជំហានទី 3 1 4 8 7 74 37 22 44
ទី 1 4 8 22 37 74 44 7
ទី 1 4 8 22 37 74 44 7
ទី 1 4 8 7 74 44 22 37
1 4 7 8 22 37 74 44
ជំហានទី 1 4 7 4 22 37 44 8 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
ជំហានទី 1 4 7 5 22 37 44 8 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
ជំហានទី 1 4 7 6 8 22 37 44 74
1 4 7 8 22 37 44 74
ជំហានទី 1 4 7 7 8 22 37 44 74
ពពុះប្រភេទឧទាហរណ៍នៅក្នុងលោក Pascal
ឧទាហរណ៍:
kol_mas const = 10;
ធំ var: អារេ [1..kol_mas] នៃ ចំនួនគត់;
a, b, K: ចំនួនគត់;
ចាប់ផ្តើម
writeln ( 'ការបញ្ចូល', kol_mas, "ធាតុនៃអារេ ');
សម្រាប់: = 1 ទៅ kol_mas ធ្វើ readln (ធំ [មួយ ]);
សម្រាប់: = 1 ទៅ kol_mas-1 បានធ្វើការចាប់ផ្តើម
សម្រាប់ខ: = a + 1 ដើម្បី kol_mas អ្វីបានជាការចាប់ផ្តើម
ប្រសិនបើទ្រង់ទ្រាយធំ [មួយ]> ធំ [ ខ] បន្ទាប់មកចាប់ផ្តើម
k: = ធំ [មួយ]; ធំ [មួយ]: = ធំ [ ខ] ធំ [ខ]: = k;
បញ្ចប់;
បញ្ចប់;
បញ្ចប់;
writeln ( 'បែប');
សម្រាប់: = 1 ទៅ kol_mas ធ្វើ writeln (ធំ [មួយ ]);
ចុងបញ្ចប់។
ពពុះគំរូរបស់តម្រៀបនៅក្នុងភាសា C (គ)
ឧទាហរណ៍:
#include
#include
int មេ (argc int, char * argv [])
{
int ធំ [8] = {36, 697, 73, 82, 68, 12, 183, 88}, ខ្ញុំ, ff;
សម្រាប់ (;;) {
ff = 0;
សម្រាប់ការ (i = 7; i> 0; i -) {
ប្រសិនបើការ (ធំ [i] <ធំ [i- 1]) {
ស្វប (ធំ [i], ធំ [i- 1]);
ff ++;
}
}
ប្រសិនបើការ (ff == 0) បំបែក;
}
getch (); // ពន្យាពេលបង្ហាញ
ត្រឡប់ 0;
} ។
Similar articles
Trending Now