Algoritm tahlili Biz tahlilni InsertionSort funktsiyasiga qo'ng'iroqlar soni va ushbu qo'ng'iroqlarning har biri uchun ro'yxatdagi elementlar sonini hisoblashdan boshlaymiz. Biz uzunlik ro'yxatining alohida holatiga murojaat qilamiz. Birinchi o'tish ortish qiymatini 7 ga ko'paytiradi, shuning uchun uzunlik ro'yxatlarida ettita qo'ng'iroqlar amalga oshiriladi. Ikkinchi o'tish, kattalashtirish qiymati 3 ga teng, shuning uchun 5 uzunlik ro'yxatlarida uchta qo'ng'iroq bo'ladi. Uchinchisida va oxirgisida, Biz 15 uzunlik ro'yxatiga bitta qo'ng'iroq qilamiz. Oldingi natijalardan kelib chiqqan holda, ikkita elementning ro'yxatida InsertionSort algoritmi eng yomon holatlarda bitta taqqoslash amalga oshirilishini bilamiz. 5 elementlar ro'yxatidagi eng yomon holatlardagi taqqoslashlar soni 10tani tashkil qiladi. Eng yomon holatlarda 15 elementlar ro'yxatidagi taqqoslashlar soni 105 tani tashkil etadi. Ushbu raqamlarni qo'shgandan so'ng, biz atigi 142 ta taqqoslashni olamiz (7 • 1 + 3 • 10 + 1 • 105). Saralash algoritmlarini tahlil qilayotganda biz ba'zan ro'yxatdagi teskari siljishlar sonini hisoblaymiz. Inversiya - bu noto'g'ri tartibda ketayotgan juft elementlar ro'yxati. Masalan, [3,2,4,1] ro'yxatda to'rtta inversiya mavjud, ya'ni (3,2), (3,1), (2,1) va (4,1). Ko'zga ko'rinadigan darajada eng ko'p burilishlar, ularning elementlari teskari tartibda ketadiganlar ro'yxatidadir; ularning soni (N2 - N) / 1.
Topshiriqlar: 1) ShellSort algoritmining barcha o'tishlari natijalarini ro'yxatga 7, 5, 3 va 1-bosqichlar bilan yozing [16,15,14,13,12,11,10,9, 8, 7,6, 5,4, 3, 2, 1].
Qancha taqqoslash amalga oshirildi?
2) 8, 4, 2 va 1-bosqichlar bilan ShellSort algoritmining barcha o'tishlari natijalarini ro'yxatga yozing [16,15,14,13,12,11,10,9, 8, 7, 6, 5,4, 3, 2, 1].
Qancha taqqoslash amalga oshirildi?
3) ShellSort algoritmining 5, 2 va 1-bosqichlari bo'yicha barcha o'tish natijalarini ro'yxatga yozing [7,3,9,4,2,5,6,1,8]. Qancha taqqoslash amalga oshirildi?
4) ShellSort algoritmining 5, 2 va 1 bosqichlari bilan barcha o'tish natijalarini ro'yxatga yozing [3,5,2,9,8,1,6,4,7]. Qancha taqqoslash amalga oshirildi?
5) Ushbu bo'limda ishlatiladigan InsertSort algoritmining yangi versiyasini yozing.
6) Ushbu bo'limda biz tartiblashni inversiyalarni olib tashlash sifatida ko'rib chiqamiz. Ro'yxatdagi ikkita qo'shni bo'lmagan narsalarni qayta tartiblash orqali olib tashlanishi mumkin bo'lgan N elementlar ro'yxatidagi teskari o'zgarishlarning maksimal soni qancha? 10 uzunlik ro'yxatiga bunday almashtirishga misol keltiring.