Page 70 - Программирование. Python. Для школьников. bizdin.kg
P. 70

70              PYTHON ПРОГРАММАЛОО ТИЛИ                                                                                                    ТИЗМЕЛЕРДИ СОРТТОО




            Өзүнүн ордуна биринчи (минималдык) элементти орноткон биринчи
            өтүштү псевдокоддо мындай жазса болот:

                           i  үчүн n-2ден 0гө чейин, кадам -1
                                  if (a[j] > a[j+1])
                                         ордун алмаштыр  a[j] жана a[j+1]
            Мында i өзгөрмөсү минималдык элемент жазылган уячанын индексин
            сактайт. Алгач бул биринчи уяча болот. j өзгөрмөсү учурда каралып жаткан
            уячаны билдирет.
            Бир өтүштө мындай цикл бир элементти гана орунга коёт. Экинчи элемент-
            ти «тартыш» үчүн, циклдин башындагы  нин акыркы мааниси гана айырма-
            луу болгон ушул сыяктуу эле дагы бир циклди жазуу керек. Эң чоң элемент
            өзүнүн ордунда тургандыктан ага тийишпешибиз керек:


            for i in range(n-1): #өтүүлөрдүн саны
                for j in range(n-i-1): #акыркы элемент каралбайт
                    if a[j] > a[j+1]:
                        a[j], a[j+1] = a[j+1], a[j]
            Ушундай циклдерден n-1 санда жасоо керек, б.а. тизмедеги элемент-
            тердин санынан 1ге кем. Эмне үчүн n эмес? Анткени эгерде n-1 элемент
            өздөрүнүн ордуна коюлса, анда калганы автоматтык түрдө өзүнүн ордуна
            турат – башка орун жок.
            Көбүкчө методу боюнча толук программаны жазалы:

            from random import randint
            n = 10
            a = [randint (1,99) for n in range (n)]
            print (a)
            for i in range (n-1): #тизмеден өтүүлөрдүн саны
                for j in range (n-i-1): #салыштыруулардын саны iге азаят
                    if a [j] > a [j+1]: #j жана j+1 элементтерин салыштырат
                        a[j], a [j+1] = a[j+1], a[j] #керек болсо эле-
            менттердин ордун алмаштырат
            print(a)
            >>>
            [5, 84, 90, 37, 30, 32, 29, 62, 17, 99]
            [5, 17, 29, 30, 32, 37, 62, 84, 90, 99]









                                                                       www.trk.kg
   65   66   67   68   69   70   71   72   73   74   75