Հիմնական նյութ
Դասընթաց․ (Համակարգչային գիտություն) > Բաժին 1
Դաս 5: Ներդրման տեսակավորումՆերդրման տեսակավորում. վերլուծություն
Ինչպես ընտրական տեսակավորումը, ներդրման տեսակավորումն անցնում է զանգվածի ցուցիչների վրայով։ Այն ցուցիչներով տարրերի վրա կանչում է
insert
ֆունկցիան։ Ինչպես indexOfMinimum
-ի ամեն կանչի ժամանակն է կախված տեսակավորված ենթազանգվածի չափսից, այնպես էլ ամեն insert
ֆունկցիայի կանչի ժամանակը։ Իրականում վերջինս կարող է և կախված չլինել, և կտեսնենք՝ ինչու։Արի վերցնենք այն դեպքը, երբ կանչում ենք տարր ունեցող ենթազանգվածում, հնարավոր է, որ բոլոր տարրերը տեղափոխվեն մեկով աջ։ Կոդի տողերը հաշվելու փոխարեն կարող ենք դրա ժամանակը նշանակել հաստատուն թվով՝ -ով։ Հետևաբար, ընդհուպ մինչև ժամանակում տարր կտեղադրենք տարրերով ենթազանգվածում։
insert
ֆունկցիան, և ենթազանգվածում տեղադրվող արժեքը փոքր է իրենից ձախ բոլոր արժեքներից։ Օրինակ, եթե [2, 3, 5, 7, 11] ենթազանգվածի մեջ տեղադրենք 0, ապա ենթազանգվածի բոլոր տարրերը պետք է մեկով տեղափոխվեն դեպի աջ։ Հետևաբար, եթե տեղադրում ենք Պատկերացրու՝ ամեն ։ Երկրորդ անգամ ։ Երրորդ անգամ ։ Եվ այդպես շարունակ, մինչև ։ Հետևաբար, տեսակավորված ենթազանգվածում տարր տեղադրելու ընդհանուր ժամանակը հավասար է՝
insert
-ի կանչի ժամանակ արժեքը փոքր է իրենից ձախ բոլոր արժեքներից։ insert
-ի առաջին կանչի ժամանակ Գումարը թվաբանական պրոգրեսիա է, բայց մեկից մինչև թվերի համար, ոչ թե ։ Օգտագործելով թվաբանական պրոգրեսիայի գումարի բանաձևը՝ տեղադրելու ընդհանուր ժամանակը ստանում ենք՝
big-Θ նշագրումով ազատվում ենք ցածր աստիճանով անդամից՝ , և հաստատուն գործակիցներից՝ ու 1/2՝ արդյունքում ստանալով ներդրման տեսակավորման աշխատելու ժամանակը՝ ։
Կարո՞ղ է ներդրման տեսակավորման ժամանակը լինել ավելի քիչ, քան ։ Պատասխանն է՝ այո։ Պատկերացրու՝ ունենք [2, 3, 5, 7, 11] զանգված, որտեղ առաջին չորս տարրերը տեսակավորված են, և մենք տեղադրում ենք 11\ թիվը։ Առաջին համեմատության ժամանակ տեսնում ենք, որ 11-ը մեծ է 7-ից, և ենթազանգվածի ոչ մի տարր չենք տեղափոխում աջ։ ժամանակ, ապա ներդրման տեսակավորման ընդհանուր ժամանակը կլինի , որը է, ոչ թե ։
insert
-ի այս կանչն ունի հաստատուն ժամանակ։ Պատկերացրու, եթե ամեն insert
կանչի ժամանակը լինի հաստատուն։ Քանի որ ընդհանուր կա insert
կանչ, եթե դրանցից յուրաքանչյուրի կանչն ունենա հաստատուն Կարո՞ղ են այս դեպքերը հանդիպել մեզ։ Կարո՞ղ է է։ Ի՞նչ է նշանակում բոլոր տարրերը փոքր են իրենցից ձախ գտնվող բոլոր տարրերից։ Նշանակում է, որ զանգվածն ամենասկզբում հակառակ դասավորվածությունն ուներ, այսինքն՝ օրինակ [11, 7, 5, 3, 2]։ Հետևաբար, հակառակ դասավորված զանգվածը ներդրման տեսակավորման վատագույն դեպքն է։
insert
-ի ամեն կանչ ենթազանգվածի բոլոր տարրերը մեկով շարժել դեպի աջ։ Կարո՞ղ է insert
-ի ոչ մի կանչ տարր չտեղաշարժի։ Երկուսն էլ հնարավոր է։ insert
կանչից հետո բանալուց ձախ ենթազանգվածում դրանից մեծ բոլոր թվերը մեկով տեղաշարժվում են դեպի աջ։ Հետևաբար, եթե բոլոր տարրերը փոքր են իրենցից ձախ գտնվող բոլոր տարրերից, ապա ներդրման տեսակավորման աշխատելու ժամանակը Իսկ ի՞նչ կլինի մյուս դեպքում։ Եթե է։ Այս դեպքը տեղի է ունենում այն ժամանակ, երբ սկզբում արդեն զանգվածը ճիշտ դասավորված է, և հետևաբար ներդրման տեսակավորման լավագույն դեպքն արդեն տեսակավորված զանգվածն է։
insert
կանչի ժամանակ ոչ մի տարր չի տեղաշարժվել, ապա բանալին մեծ է իրենից ձախ բոլոր տարրերից։ Հետևաբար, եթե բոլոր տարրերը մեծ կամ հավասար են իրենցից ձախ գտնվող բոլոր տարրերին, ապա ներդրման տեսակավորման աշխատելու ժամանակը Է՞լ ինչ կարող ենք ասել ներդրման տեսակավորման աշխատելու ժամանակի մասին։ Ենթադրենք՝ զանգվածը խառն է դասավորված։ Ապա միջինում կակնկալենք, որյուրաքանչյուր տարրը փոքր լինի իրենից ձախ տարրերից կեսից։ Այս դեպքում տարրերով ենթազանգվածի վրա -ը կտեղափոխի մեկով աջ։ Աշխատելու ժամանակը կլինի վատագույն աշխատելու ժամանակի կեսը։ Բայց ասիմպտոտային նշագրման ժամանակ, երբ հաստատուն գործակիցներն անտեսում ենք, միջին դեպքը կլինի ՝ վատագույն դեպքի նման։
insert
կանչը միջինում դրանցից Իսկ ի՞նչ կլինի, եթե զանգվածը «համարյա տեսակավորված է»․ յուրաքանչյուր տարրը վատագույն դեպքում անցնում է հաստատուն տարրերի վրայով, ասենք՝ 17։ Հետևաբար, տարր ունեցող ենթազանգվածի վրա ։ հատ , որը -ն է, ճիշտ այնպես, ինչպես լավագույն դեպքում։ Հետևաբար, ներդրման տեսակավորումն արագ է, երբ ունենք համարյա տեսակավորված զանգված։
insert
-ի ամեն կանչ տեղափոխում է առավելագույնը 17 տարր, և insert
-ի մի կանչի ժամանակը կլինի առավելագույնը insert
կանչից հետո աշխատելու ժամանակը կլինի Որպես ներդրման տեսակավորման աշխատելու ժամանակների ամփոփում՝
- Վատագույն դեպք․
։ - Լավագույն դեպք․
։ - Խառը զանգվածով միջին դեպք․
։ - «Համարյա տեսակավորված» զանգվածով միջին դեպք․
։
Եթե ուզում ես բոլոր դեպքերի համար սահմանել ներդրման տեսակավորման աշխատելու ժամանակը, ապա պետք է ասես, որ այն է։ Չես կարող ասել , քանի որ լավագույն դեպքը է։ Չես կարող ասել , քանի որ վատագույն դեպքը է։
Նյութը ստեղծվել է Դարթմութի համակարգչային գիտությունների դասախոսներ Թոմաս Քորմենի և Դեվին Բալկքոմի, ինչպես նաև «Քան» ակադեմիայի ծրագրավորման թիմի կողմից։ Նյութը լիցենզավորվել է CC-BY-NC-SA-ի կողմից։
Ուզո՞ւմ ես միանալ խոսակցությանը։
Առայժմ հրապարակումներ չկան։