Sorting Fundamentals
Saralash asoslari
"Time & Utilities" kursida sort.Ints va sort.Sliceni tayyor vosita sifatida ishlatgan edingiz. Bu kursda esa bir qadam orqaga qaytib, ularning ichida aslida nima sodir bo'lishini — saralash algoritmlarining o'zini — o'rganamiz.
Kiyimlaringizni rangi bo'yicha tartiblab, javonga terib chiqishni tasavvur qiling. Buni qilishning bir necha yo'li bor: ikkita qo'shni kiyimni solishtirib, noto'g'ri tartibda bo'lsa almashtirib borish (sekin, lekin sodda); yoki kiyimlarni kichik guruhlarga bo'lib, har birini alohida tartiblab, keyin birlashtirish (tezroq, lekin murakkabroq). Har bir usul — bitta "algoritm": muammoni hal qilishning aniq, qadam-baqadam ko'rsatmasi.
Saralanmagan: [5, 2, 8, 1, 9]
Saralangan: [1, 2, 5, 8, 9]
Savol: qaysi algoritm bu o'zgarishni QANDAY amalga oshiradi?
Keyingi ikkita darsda ikkita mashhur javobni ko'ramiz: Bubble Sort va Quick Sort.Nega bu muhim, agar sort.Ints allaqachon bor bo'lsa? Chunki (1) suhbatlarda va texnik intervyularda bu klassik savollar tez-tez uchraydi, (2) algoritmning ichki ishlashini bilish — u qachon sekin ishlashi mumkinligini (masalan, allaqachon deyarli saralangan yoki teskari saralangan ma'lumotda) oldindan bashorat qilishga yordam beradi, va (3) bu — "Time & Utilities" darsida ko'rgan sort.Slice'ning o'zi ichida ishlatiladigan g'oyalarning aynan o'zi.
>_ Exercise
Ro'yxat allaqachon saralanganligini tekshiradigan funksiya yozing.
- •isSorted(nums []int) bool yozing: har bir elementning keyingisidan kichik yoki teng ekanini tekshiring
- •{1, 2, 3, 5} va {3, 1, 2} uchun natijalarni chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Saralash algoritmlari — ma'lumotni tartibga keltirishning turli, o'zaro tezlik/soddalik murosasiga ega usullari; ularning ichki ishlashini bilish, real loyihada tezlik muammolarini oldindan bashorat qilishga yordam beradi.
NEXT UP
Bubble Sort
$ go run main.go
Kodingizni ishga tushiring