10^6 տարրերի տեսակավորումը անիրագործելի է սահմանված ժամանակի սահմանափակման պայմաններում։
Հուշում 2
Դուք կարող եք զանգվածը բաժանել QuickSort-ի նմանությամբ, ընտրելով պատահական pivot։ Այնուհետև կարող եք պահել միայն ձեզ անհրաժեշտ մասը և անտեսել մյուս մասը։
Այս գործընթացը հնարավոր է կրկնել այնքան ժամանակ, մինչև անտեսված տարրերի քանակը ձեր ընթացիկ տարրից առաջ հավասարվել է k-ի։
Պատահական բաժանումը, իրականում, ունի սպասվող գծային ժամանակային բարդություն ։ Գիտե՞ք, թե ինչու։
Հուշում 3
Յուրաքանչյուր անգամ, երբ պատահականորեն բաժանում ենք զանգվածը, ստացվող զանգվածի ակնկալվող չափը դառնում է ընթացիկի կեսը։ Այսպիսով, եթե այս պահին զանգվածի չափը n է, ապա մեկ բաժանումից հետո կարող ենք դուրս նետել կեսը՝ n/2, երկու բաժանումից հետո՝ n/4, և այդպես շարունակ։ Այս շարքը գումարվում է որպես ։
Այդուհանդերձ, ալգորիթմը կարող էWorst-case(ամենավատ) տարբերակում ունենալ բարդություն, եթե պատահականորեն ընտրված տարրերը չբաժանեն զանգվածը ըստ սպասվող n/2 չափի: