Guruhi talabasining


partition (arr, low, high) {



Yüklə 177,77 Kb.
Pdf görüntüsü
səhifə8/8
tarix16.12.2023
ölçüsü177,77 Kb.
#182740
1   2   3   4   5   6   7   8
mta dedline12


partition
(arr, low, high) { 
let

=
low, j 
=
high 
+
1
while
(
true
) { 
while
(arr[low] 
>
arr[
++
i]) { 
if
(i 
==
high) 
break


while
(arr[low] 
<
arr[
--
j]) { 
if
(j 
==
low) 
break

if
(i 
>=
j) 
break

[arr[i], arr[j]] 
=
[arr[j], arr[i]] 



[arr[low], arr[j]] 
=
[arr[j], arr[low]] 
return


function
sort
(arr, low, high) { 
if
(high 
<=
low) 
return
let

=
partition
(arr, low, high) 
sort
(arr, low, j 
-
1

sort
(arr, j 
+
1
, high) 

// Shuffle
for
(
let

=
arr.
length
-
1
; i 
>
0
; i
--
) { 
const

=
Math
.
floor
(
Math
.
random
() 
*
(i 
+
1
)); 
[arr[i], arr[j]] 
=
[arr[j], arr[i]] 

sort
(arr, 
0
, arr.
length
-
1

return
arr 

view rawquicksort.js 
hosted with 
by 
GitHub
 
Note: Funksiya faqat integer sonlarni to’g’ri tartiblaydi. Harflarni yoki string 
sonlarni to’g’ri tartiblash uchun «>» dan boshqa amalni ishlatish kerak. Masalan, 
ES6 uchun 
String.prototype.localeCompare()
 ni ishlatib ko’ring. 
Kod Githubda: 
https://github.com/Webmaxor/leetcode-
solutions/blob/master/algorithms/sorts/quicksort.js
 
Quicksort’ning qisqa ko’rinishi 
Qisqa ko’rinishda array qismlari left va right array’larga yig’iladi (qo’shimcha 
array ishlatiladi). Ammo kodi o’qib, eslab qolishga oson bo’ladi. 
function
quickSort
(arr) { 
if
(arr.
length
<
2

return
arr 
let
pivot 
=
arr[
0
], left 
=
[], right 
=
[] 


for
(i 
=
1
; i 
<
arr.
length
; i
++
) { 
if
(arr[i] 
<=
pivot) { 
left.
push
(arr[i]) 

else

right.
push
(arr[i]) 


return
quickSort
(left).
concat
(pivot, 
quickSort
(right)) 

Merge Sort va uning ishlash prinsipi 
Merge Sort bu saralanmagan arrayni taqqoslashga asoslangan holda saralovchi 
algoritm bo'lib, uning ishlash prinsipida to'liq bo'lib tashla va hukmronlik qil 
g'oyasini uchratish mumkin. Demak, merge sort asosiy ikkita qismdan iborat: 
1
Berilgan arrayni rekursiv holda teng ikkita qismlarga bo'lib chiqish. Bu 
qadam, qism arraylar uzunligi 1 ga (yoki undan kichik) teng bo'lib qolguncha 
davom etadi. 
2
Hosil bo'lgan arraylarni qaytib birlashtirib chiqish va bir vaqtni o'zida hosil 
bo'luvchi array saralangan bo'lishini ta'minlash. 
Merge sort qanday ishlashini vizual tasavvur qilish uchun quyidagi rasmga 
e'tiboringizni qaratmoqchiman. Unda amallar tartibi ham ko'rsatib qo'yilgan 


Ko'rib turganingizdek algoritm ishlash prinsipini tushunish uchun unchalik ham 
murakkab emas. Va yana e'tibor bergan bo'lsangiz, birinchi bo'linishdan keyingi 
arrayning chap va o'ng qismlarida asosiy array bilan bir xil amal ketmoqda, ya'ni 
bizning masalamizning qism masalasi ham bosh masala bilan bir xilda ishlaydi. 
Endi esa algoritmni implementatsiya qilish uchun qadamma-qadam nima qilish 
kerakligiga o'tamiz 
Merge sort algoritmi qadamlari 
Merge Sort funksiyasiga array va uning boshlang'ich (left) va oxirgi nuqtalari 
(right) beriladi. 
Arraynining o'rtasi hisoblanadi: mid = (left + right)/2. Bu narsa uni teng ikkiga 
bo'lish uchun kerak bo'ladi. 
Merge sortni rekursiv holda birinchi va ikkinchi qismlar uchun chaqiriladi. 


2- va 3-qismlarda hosil bo'lgan arraylar birlashtirib chiqiladi. (Array mavzusidagi 
ikkita arrayni birlashtirish masalasini ko'rib chiqing) 
Algoritm ishlash tezligi O(nlogn) bo'lib tezligi O(n²) bo'lgan oddiy Bubble, 
Insertion, Selection Sortlardan ancha tez ishlaydi. O'zi umuman olganda, 
taqqoslash asosida ishlaydigan algortmlarning eng tez ishlash holati O(nlogn) 
bo'lishi isbotlangan. 
Merge sort turg'un saralash hisoblanadi, ya'ni saralamagan arrayda bir nechta bir 
xil elementlar kelgan bo'lsa, ularning tartibi saralangan massivda ham o'zgarib 
ketib qolmaydi. 
Algoritm ishlashi uchun xotiradan qo'shimcha O(n) joy talab qiladi


Xulosa 
Men bu tayyorlagan ishimdan saralash algoritimlari turlari vazifalari
Yaxshilangan usullari tez saralash (Quicksort) saralash va saralash jarayoni 
taqoslashga asoslanganligini ham misollar yordamida korib chiqdik 
Saralash ikki xil usulda ichki va tashqi saralash usulida ham bajarib korib
Ozimga kerakli malumotlarni oldim va bu mavzudan juda kop malumotlar oldim 


Foydalanilgan adabiyotlar 
Google saralash mavzular toplami
1. Informatika va informatsion texnologiyalar, M. Aripov va boshqalar. Oliy o’quv 
yurti
talabalari uchun darslik. Toshkent-2019 y.
2. Axborot texnologiyalari, M. Aripov va boshqalar. Oliy o’quv yurti talabalari 
uchun o’quv
qo’llanma. Toshkent-2019 y.
3. Delphi tilida dasturlash asoslari, Sh. Nazirov. Toshkent-2018 y. 



Yüklə 177,77 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin