Köpük çeşidləmə (Bubble sort)#1094

Köpük çeşidləmə (Bubble sort)

1 saniyə
64 meqabayt
Orta

Sadalama ilə çeşidləmə (Bubble sort) sadə çeşidləmə alqoritmidir. Bu alqoritm çox asan başa düşülür və tətbiq olunur, amma yalnız kiçik massivlər üçün effektivdir. Əsasən tədris məqsədi ilə istifadə edilir və real məsələlərdə nadir hallarda tətbiq olunur; praktikada daha çox daxil etmə ilə çeşidləmə işlədilir. Alqoritm çeşidlənəcək massivdə təkrar-təkrar keçidlər edir. Hər keçiddə qonşu elementlər müqayisə olunur və yerləri səhvdirsə dəyişdirilir. Bu proses heç bir dəyişiklik olmayana qədər davam edir, bu da massiv çeşidləndi deməkdir. Alqoritm işləyərkən elementlər "köpük kimi" lazımi mövqeyə keçirlər, buna görə də adı belədir.

Vikipediya

Köpük çeşidləmə çox sadə bir alqoritmdir və vaxt mürəkkəbliyi O(n^2)-dir. Hər dəfə massivə başdan sona baxılır, qonşu elementlər müqayisə edilir və lazım olarsa yerləri dəyişdirilir. Bu, bir keçiddə ən azı bir dəyişiklik olmayana kimi təkrarlanır. Tutaq ki, keçiddən sonra massiv artıq artan sıra ilə çeşidlənib. Onda deyirik ki, bu massiv üçün köpük çeşidləmə mərhələlərinin sayıdır. Nümunə: başlanğıc massiv "5 1 4 2 8" olsun və bu massivi alqoritmlə aşağıdakı kimi çeşidləyək:

Birinci keçid:

( 4 2 8) ( 4 2 8), ilk iki elementi müqayisə etdik və yerlərini dəyişdik. (1 2 8) (1 2 8), dəyişmə: 5 > 4. (1 4 8) (1 4 8), dəyişmə: 5 > 2. (1 4 2 ) (1 4 2 ), son iki element düzgündür (8 > 5), dəyişmə yoxdur.

İkinci keçid:

( 2 5 8) ( 2 5 8). (1 5 8) (1 5 8), dəyişmə: 4 > 2. (1 2 8) (1 2 8). (1 2 4 ) (1 2 4 ).

T = 2 keçiddən sonra massiv çeşidlənib, ona görə də bu massiv üçün köpük çeşidləmə mərhələlərinin sayı -dir.

Artıq çeşidlənmiş massivində müxtəlif tam ədəd var və deyilir ki, bu massiv dəqiq keçiddən sonra köpük çeşidləmə yolu ilə alınıb. Tapşırıq: neçə başlanğıc massiv ola bilər ki, yalnız keçiddən sonra bu ardıcıllıq əldə olunsun? Cavab böyük ola bilər, cavabı modulunda çıxarın.

Giriş

Giriş bir neçə testdən ibarətdir.

Birinci sətrdə (T \leq 100\ 000) — testlərin sayı verilir.

Sonra sətr gəlir, hər sətirdə iki tam ədəd və (1 \leq N \leq 1\ 000\ 000, 0 \leq K \leq N - 1) — massiv ölçüsü və keçid sayı.

Çıxış

Hər test üçün cavabı modulunda ayrıca sətrdə çap edin.

Nümunələr

Nümunə 1

Loading
Loading

Qeyd

Tutaq ki, verilmiş massiv \{a, b, c\}-dir (a < b < c). başlanğıc ardıcıllıq var:

\{a, b, c\},\ \{a, c, b\},\ \{b, a, c\},\ \{b, c, a\},\ \{c, a, b\},\ \{c, b, a\},

Və çeşidlənmiş massiv belə əldə edilə bilər:

\{a, b, c\}: artıq çeşidlənib, heç nə etmirik.

\{a, c, b\},\ \{b, a, c\},\ \{c, a, b\}: köpük çeşidləmə keçidindən sonra.

\{b, c, a\},\ \{c, b, a\}: keçiddən sonra.