1.7. Дастурлар таҳлили Фараз қилайлик, бизда ҳоҳлаганимиздан кўра секин ишлайдиган катта мураккаб алгоритм бўлсин. Унинг ишлашини тезлаштириш учун қайси қисмларини ўзгартириш керак?
Дастурни кўриб чиқиш ва ундаги кўп ҳисоблашлар ва цикллар бажариладиган қисм дастурлар (ёки бошқача қилиб процедура ва функциялар) ни топиш мумкин, ҳамда уларни такомиллаштириш мумкин. Бу ўзгартиришлар самара бермаслигини пайқшимиз ҳам мумкин. Яхшиси дастлаб тез-тез ишлатиладиган қисм дастурларни топиш ва уларни яхшилаш керак. Уларни қидиришнинг бир усули барча қисм дастурлар учун глобал ўзгарувчилар тўпламини киритиш керак. Дастур бошида бу ҳисоблагичларнинг барчаси нолга таъминланади. При начале работы программы все счетчики обнуляются. Кейин ҳар бир қисм дастур биринчи қаторига мос ҳисоблагични 1 га ошириш бўйруғи қўйилади. Дастурнинг бутун бажарилиш жараёнида ҳисоблагичларнинг ўсиши бажарилади ва ниҳоят дастур охирида бизнинг ҳисоблагичлар тўпламимиз ҳар бир қисмий дастур неча марта чақирилганлигини кўрсатади. Шунда қайси қисм дастурлар тез-тез, қайсилари бир неча марта чақирилишини кўришимиз мумкин.
Ҳисоблагичларни қисм дастурлар даражасида ҳам ишлатиш мумкин. Бунда улар тармоқланиш, цикллар қисмларидаги амалларни бажарилишини аниқлаш учун ишлатилади. Умуман ҳисоблагичларни мумкин бўлган бошқарув структураларининг исталган жойига қўйиш мумкин.Дастурнинг иши охирида ўрнатилган ҳисоблагичлар қисмий дстурлар ҳар бир блокидаги бажарилишлар сони ҳақидаги маълумотларни ифодалайди. Сўнг энг катта иш бажарадиган қисмий дастурлар қисмларни яхшилаш чораларини кўриш мумкин. Бу компьютер ва дастурий таъминотлар яратиш тизимларида дастур ҳақида автоматик маълумот олишнинг муҳим воситасидир.
II . САРАЛАШ ВА ҚИДИРИШ АЛГОРИТМЛАРИНИНГ СИНФЛАРИ ВА УЛАРНИ ҚИЁСИЙ ҲАРАКТЕРИСТИКАЛАРИ
2.1. Қидириш алгоритмлари ва уларни баҳолаш Керакли маълумотни рўйхатдан қидириш назарий дастурлаштиришнинг асосий масалаларидан бири ҳисобланади. Қидириш алгоритмларни муҳокама қилишда маълумотлар қандайдир рўйхатни ҳосил қилувчи ёзувлардан тузилган деб фараз қиламиз, қайсики дастурдаги маълумотлар массивини намоён қилади. Ёзувлар ёки рўйхат элементлари массивда кетма-кет жойлашади ва улар орасида бўш жой йўқ. Ёзувларнинг барчаси рўйхатда 1 дан N гача рақамланган. Қоидага кўра ёзувлар майдонлардан тузилган бўлиши мумкин, лекин бизни бу майдонлардан калит деб аталувчи қиймат қизиқтиради. Рўйхатлар калит майдон қийматига кўра сараланган ёки сараланмаган бўлиши мумкин. Сараланмаган рўйхатда ёзувлар тартиби тасодифий, сараланганида эса калитнинг ўсиш тартибида жойлашган бўлади.
Сараланмаган рўйхатда керакли ёзувни қидириш бутун рўйхатни ёзув топилгунга қадар кўриб чиқишга олиб келади. Бу қидириш алгоритмларининг оддий кўриниши. Кўришимиз мумкин бу алгоритм унча самарадор эмас, лекин у ихтиёрий рўйхатда ишлайди.
Сараланган рўйхатда иккилик қидиришдан фойдаланиш мумкин. Иккилик қидириш тартибланганликка кўра бир солиштиришда бирдан ортиқ элементларни ташлаб юборишга асосланган. Натижада қидириш самарадор бўлади.
Одатда қидириш нафақат керакли элементни рўйхатда бор йўқлигини аниқлаш учун, балки топилган калит қийматига боғлиқ маълумотларни олиш учун хизмат қилади. Масалан, калит қиймат ходимнинг рақами ёки тартиб рақами ёхуд бошқа исталган ягона идентификатор бўлиши мумкин. Керакли калит топилгандан сўнг, дастур унга боғланган маълумотларни ўзгартириши мумкин ёки бутун ёзувни чиқариши мумкин. Охир оқибатда қидириш алгоритми олдида муҳим вазифа калитнинг ўрнини топиш масаласи туради. Шунинг учун қидириш алгоритмлари керакли калитни сақловчи ёзув индексини беради. Агар калит қиймат топилмаса, у ҳолда қидириш алгоритми массив юқори чегарасидан чиқувчи индекс қийматини беради. Мақсадимиз учун фараз қиламизки, рўйхат элементлари 1 дан N гача рақамланган. Бу агар мақсад элементи топилмаса 0 ни беришга имкон беради. Оддийлик учун калит қиймат такрорланмайди деб фараз қиламиз.