Merged Sort pada Python
Merge Sort adalah algoritma Divide and Conquer. Ini membagi array input dalam dua bagian, panggilan itu sendiri untuk dua bagian dan kemudian menggabungkan dua bagian yang disortir. Fungsi Merge() digunakan untuk menggabungkan dua bagian.
Contoh Source code Merged sort :
1. Pengurutan data terkecil ke terbesar :
def MergedSort(x):
data = x
if len(data)>1:
mid = len(data)//2
kiri = data[:mid]
kanan = data[mid:]
data = x
if len(data)>1:
mid = len(data)//2
kiri = data[:mid]
kanan = data[mid:]
#recursion
MergedSort(kiri)
MergedSort(kanan)
MergedSort(kiri)
MergedSort(kanan)
i=0
j=0
k=0
j=0
k=0
while i < len(kiri) and j < len(kanan):
if kiri[i] > kanan[j]:
data[k]=kiri[i]
i=i+1
else:
data[k]=kanan[j]
j=j+1
k=k+1
if kiri[i] > kanan[j]:
data[k]=kiri[i]
i=i+1
else:
data[k]=kanan[j]
j=j+1
k=k+1
while i < len(kiri):
data[k]=kiri[i]
i=i+1
k=k+1
data[k]=kiri[i]
i=i+1
k=k+1
while j < len(kanan):
data[k]=kanan[j]
j=j+1
k=k+1
return data
data[k]=kanan[j]
j=j+1
k=k+1
return data
def MergedSort(A): n = len(A) if (n<2): return mid = len(A)//2 left = A[:mid] right = A[mid:] MergedSort(left) MergedSort(right) i=0 j=0 k=0 while i <
len(left) and j < len(right): if left[i]
< right[j]:
A[k]=left[i] i=i+1 else:
A[k]=right[j] j=j+1 k=k+1
while i <
len(left): A[k]=left[i] i=i+1 k=k+1
while j <
len(right): A[k]=right[j] j=j+1 k=k+1
Alist= [54,26,93,17,99,77,31,44,55,20,100]MergedSort(Alist)print(Alist)
2. Pengurutan data terbesar ke terkecil :
def MergedSort(A): n = len(A) if (n<2): return mid = len(A)//2 left = A[:mid] right = A[mid:] MergedSort(left) MergedSort(right) i=0 j=0 k=0 while i < len(left) and j < len(right): if left[i] > right[j]: A[k]=left[i] i=i+1 else: A[k]=right[j] j=j+1 k=k+1
while i < len(left): A[k]=left[i] i=i+1 k=k+1
while j < len(right): A[k]=right[j] j=j+1 k=k+1
Alist= [54,26,93,17,99,77,31,44,55,20,100]MergedSort(Alist)print(Alist)
Selamat Mencoba...
Tidak ada komentar:
Posting Komentar