Anda di halaman 1dari 30

SORTING

Putri Kurnia Handayani, S.Kom., M.Kom


Pengertian Sorting
Sorting merupakan suatu proses untuk menyusun kembali
humpunan obyek menggunakan aturan tertentu. Sorting disebut
juga sebagai suatu algoritma untuk meletakkan kumpulan elemen
data kedalam urutan tertentu berdasarkan satu atau beberapa kunci
dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang
biasa digunakan dalam suatu proses sorting:

1. Urut Naik (ascending) 


   Mengurutkan dari data yang mempunyai nilai paling kecil sampai
paling besar
2. Urut Turun (descending)
   Mengurutkan dari data yang mempunyai nilai paling besar sampai
paling kecil.
Mengapa harus melakukan
Sorting Data ??
Ada banyak alasan dan keuntungan dengan mengurutkan
data. Data yang terurut mudah untuk dicari, mudah untuk
diperiksa, dan mudah untuk dibetulkan jika terdapat
kesalahan. Data yang terurut dengan baik juga mudah untuk
dihapus jika sewaktu-waktu data tersebut tidak diperlukan
lagi.
Selain itu, dengan mengurutkan data maka kita semakin
mudah untuk menyisipkan data atapun melakukan
penggabungan data.
Macam-Macam Sorting

Beberapa metode sorting diantaranya :

 Bubble sort
 Selection Sort
 Insertion sort
 Merge Sort
 Shell Sort
BUBBLE SORT
Bubble sort (metode gelembung) adalah metode
atau algoritma pengurutan dengan cara melakukan
penukaran data dengan tempat disebelahnya jika data
sebelum lebih besar dari pada data sesudahnya
secara terus menerus sampai bisa dipastikan dalam
satu iterasi tertentu tidak ada lagi perubahan, atau
telah terurut dengan benar. Jika tidak ada perubahan
berarti data sudah terurut.
Disebut pengurutan gelembung karena masing-
masing kunci atau data akan dengan lambat
menggelembung atau membandingan data ke
posisinya yang tepat.
Lanjutan ....
Pengurutan yang dilakukan dengan membandingkan masing-
masing item dalam suatu list secara berpasangan,
menukar item jika diperlukan, dan mengulanginya sampai akhir
list secara berurutan, sehingga tidak ada lagi item yang dapat
ditukar.
                                                                              

Data akan di tukar secara bergantian sampai data


terurut
12345678
Contoh program Bubble sort

def bubblesort(list):

# Swap the elements to arrange in order


for iter_num in range(len(list)-1,0,-1):
for idx in range(iter_num):
if list[idx]>list[idx+1]:
temp = list[idx]
list[idx] = list[idx+1]
list[idx+1] = temp

list = [19,2,31,45,6,11,121,27]
bubblesort(list)
print(list)
Contoh program Bubble sort
SELECTION SORT

Pengertian dari selection sort adalah mencari elemen yang


tepat untuk diletakkan di posisi yang telah diketahui, dan
meletakkannya diposisi tersebut setelah data tersebut
ditemukan.

Pengurutan dilakukan dengan memilih elemen terbesar dan


menempatkan pada posisinya, kemudian mencari element
terbesar berikutnya dan menempatkan pada tempatnya, dan
seterusnya.

Selection Sort membandingkan elemen yang sekarang


dengan elemen yang berikutnya sampai dengan elemen yang
terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen
sekarang maka dicatat posisinya dan kemudian ditukar. 
Lanjutan ....
Proses pengurutan dengan menggunakan
metode selection sort secara terurut naik
adalah :
1. Mencari data terkecil dari data pertama
sampai data terakhir, kemudian di tukar
posisinya dengan data pertama.
2. Mencari data terkecil dari data kedua
sampai data terakhir, kemudian di tukar
dengan posisinya dengan data kedua.
3. Mencari data terkecil dari data ketiga
sampai data terakhir, kemudian di tukar
posisinya dengan data ketiga
4. dan seterusnya sampai semua data
turut naik. apabila terdapat n buah data
yang akan di urutkan,
Lanjutan ....
Contoh program Selection sort

def selection_sort(input_list):

for idx in range(len(input_list)):

min_idx = idx
for j in range( idx +1, len(input_list)):
if input_list[min_idx] > input_list[j]:
min_idx = j
# Swap the minimum value with the compared value

input_list[idx], input_list[min_idx] = input_list[min_idx],


input_list[idx]

l = [19,2,31,45,30,11,121,27]
selection_sort(l)
print(l)
Contoh program Selection sort
INSERTION SORT
Metode pengurutan pada insertion sort adalah
metode dengan cara menyisipkan elemen larik pada
posisi yang tepat.
Algoritma insertion sort pada dasarnya memilah
data yang akan diurutkan menjadi dua bagian, yang
belum diurutkan dan yang sudah diurutkan.
                                                                              
Lanjutan ....

Elemen pertama diambil dari bagian array yang


belum diurutkan dan kemudian diletakkan sesuai
posisinya pada bagian lain dari array yang telah
diurutkan. Langkah ini dilakukan secara berulang
hingga tidak ada lagi elemen yang tersisa pada
bagian array yang belum diurutkan.
Contoh program Insertion sort

def insertion_sort(InputList):
for i in range(1, len(InputList)):
j = i-1
nxt_element = InputList[i]
# Compare the current element with next one

while (InputList[j] > nxt_element) and (j >= 0):


InputList[j+1] = InputList[j]
j=j-1
InputList[j+1] = nxt_element

list = [19,2,31,45,30,11,121,27]
insertion_sort(list)
print(list)
Contoh program Insertion sort
MERGE SORT
Merge sort merupakan algoritma pengurutan dalam ilmu
komputer yang dirancang untuk memenuhi kebutuhan
pengurutan atas suatu rangkaian data yang tidak
memungkinkan untuk ditampung dalam memori komputer
karena jumlahnya yang terlalu besar. Algoritma ini
ditemukan oleh John von Neumann pada tahun 1945.
MERGE SORT
Merge sort terlebih dahulu membagi array menjadi dua
bagian yang sama, lalu menggabungkannya dalam cara
yang diurutkan
Contoh program Merge sort

def merge(left_list, right_list):


sorted_list = []
left_list_index = right_list_index = 0

# We use the list lengths often, so its handy to make variables


left_list_length, right_list_length = len(left_list), len(right_list)

for _ in range(left_list_length + right_list_length):


if left_list_index < left_list_length and right_list_index < right_list_length:
# We check which value from the start of each list is smaller
# If the item at the beginning of the left list is smaller, add it
# to the sorted list
if left_list[left_list_index] <= right_list[right_list_index]:
sorted_list.append(left_list[left_list_index])
left_list_index += 1
Contoh program Merge sort

# If the item at the beginning of the right list is smaller, add it


# to the sorted list
else:
sorted_list.append(right_list[right_list_index])
right_list_index += 1

# If we've reached the end of the of the left list, add the elements
# from the right list
elif left_list_index == left_list_length:
sorted_list.append(right_list[right_list_index])
right_list_index += 1
Contoh program Merge sort

# If we've reached the end of the of the right list, add the elements
# from the left list
elif right_list_index == right_list_length:
sorted_list.append(left_list[left_list_index])
left_list_index += 1

return sorted_list
Contoh program Merge sort

def merge_sort(nums):
# If the list is a single element, return it
if len(nums) <= 1:
return nums

# Use floor division to get midpoint, indices must be integers


mid = len(nums) // 2

# Sort and merge each half


left_list = merge_sort(nums[:mid])
right_list = merge_sort(nums[mid:])

# Merge the sorted lists into a new one


return merge(left_list, right_list)
Contoh program Merge sort

# Verify it works
random_list_of_nums = [120, 45, 68, 250, 176]
random_list_of_nums = merge_sort(random_list_of_nums)
print(random_list_of_nums)
SHELL SORT
Metode ini disebut juga dengan metode pertambahan
menurun (diminishing increment sort). Metode ini
dikembangkan oleh Donald L. Shell pada tahun 1959,
sehingga sering disebut dengan Metode Shell Sort.

Metode ini mengurutkan data dengan cara membandingkan


suatu data dengan data lain yang memiliki jarak tertentu –
sehingga membentuk sebuah sub-list-, kemudian dilakukan
penukaran bila diperlukan
Contoh program Shell sort
def shellSort(input_list):

gap = len(input_list) // 2
while gap > 0:

for i in range(gap, len(input_list)):


temp = input_list[i]
j=i
# Sort the sub list for this gap

while j >= gap and input_list[j - gap] > temp:


input_list[j] = input_list[j - gap]
j = j-gap
input_list[j] = temp

# Reduce the gap for the next element

gap = gap//2

list = [19,2,31,45,30,11,121,27]

shellSort(list)
print(list)
Contoh program Shell sort
Contoh program Shell sort
Kesimpulan
Pada struktur data Sorting adalah sebuah metode untuk
pengurutan data, misalnya dari data yang terbesar ke data
yang terkecil. Dengan cara program yang dibuat harus dapat
membandingkan antar data yang di inputkan. Pada dasarnya
ada dua macam urutan yang biasa digunakan dalam suatu
proses sorting:
1. Urut Naik (ascending) 
2. Urut Turun (descending)
   Sedangkan macam-macam sorting yang sering banyak
digunakan diantaranya :
 Bubble Sort
 Selection Sort
 Insertion Sort
 Merge Sort
 Shell Sort

Anda mungkin juga menyukai