Sorting Data 2 - Insertion Sort dan Quick Sort

1. Insertion sort
adalah sebuah algoritma pengurutan yang membandingkan dua elemen data pertama, mengurutkannya, kemudian mengecek elemen data berikutnya satu persatu dan membandingkannya dengan elemen data yang telah diurutkan. Proses dilakukan sebanyak N-1 tahapan (dalam sorting disebut sebagai "pass"), dengan indeks dimulai dari 0. Proses pengurutan dengan menggunakan algoritma Insertion Sort dilakukan dengan cara membandingkan data ke-i (dimana i dimulai dari data ke-2 sampai dengan data terakhir) dengan data berikutnya. Jika ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan sesuai dengan posisi yang seharusnya.

insertion sort

insertion sort 2

def InsertionSort(val):
	for index in range(len(val)-1,-1,-1):
		valueaktif = val[index]
		posisi = index
		print(val)
		while posisi < len(val)-1 and valueaktif < val[posisi+1]:
		#	print(valueaktif,'<',val[posisi+1])
			val[posisi]=val[posisi+1]
			posisi = posisi+1
		val[posisi]=valueaktif


DaftarAngka = [68, 90, 78, 44, 34, 20, 100, 56, 34]
InsertionSort(DaftarAngka)
print(DaftarAngka)

Video Tutorial Insertion Sort 

2. Quick Sort
Algoritma pengurutan populer yang sering lebih cepat dalam praktiknya dibandingkan dengan algoritma penyortiran lainnya. Ini menggunakan strategi divide-and-conquer untuk mengurutkan item dengan cepat dengan membagi array besar ke dalam dua array yang lebih kecil

quick sort 1

quick sort 2


print('### Quick Sort Modif Pivot in the middle ###')
print('=====================================================')
def quickSort(a,first,last):
    if first < last:
        print('partion')
        pecah = partion(a,first,last)
        quickSort(a,first,pecah-1)
        quickSort(a,pecah+1,last)
def partion(a,start,end):
    middle = (start+end)//2
    pivot = a.pop(middle)
    pIndex = start
    for i in range(start,end):
        print('if',a[i],'>=', pivot)
        if a[i] >= pivot:
            a[i],a[pIndex]=a[pIndex],a[i]
            pIndex += 1
            print('result',pivot,a)
    a.insert(pIndex,pivot)
    print('Hasil Fungsi',pivot,a)
    return pIndex

a=[68, 90, 78, 44, 34, 20, 100, 56, 34]
quickSort(a,0,len(a)-1)
print('Hasil Akhir',a)

Video Tutorial Quick Sort 

Comments

Popular posts from this blog

Searching - Linier Search & Binary Search Python

Sorting Data 1 - Bubble Sort dan Selection Sort

Materi Hashing - Struktur Data