• Tidak ada hasil yang ditemukan

Penyortiran Gelembung

N/A
N/A
EDSEL YUSUF

Academic year: 2024

Membagikan "Penyortiran Gelembung"

Copied!
19
0
0

Teks penuh

(1)

Alvin Tjondrowiguno

3: Algoritma Dasar

Desain dan Analisis Algoritma

(2)

4 8

3

6

7 5

Algoritma

Penyortiran

(3)

• Keluaran: Array yang sama dengan masukan, namun dalam urutan tertentu (untuk mempermudah, akan

• Operasi dasar: Perbandingan diasumsikan “naik”)

• Input: Array dengan panjang n

Masalah Penyortiran

(4)

Tukar pasangan berdekatan yang letaknya salah sehingga

elemen yang benar "digelembungkan" ke akhir array 3 4 6 2 7 5 8

Tukar pasangan berdekatan yang letaknya salah sehingga

elemen yang benar "digelembungkan" ke akhir array 3 6 4 8 2 7 5 Tukar pasangan berdekatan yang letaknya salah sehingga

3 6 4 8 2 7 5

elemen yang benar "digelembungkan" ke akhir array 3 4 2 6 5 7 8

Sortir Gelembung

(5)

untuk j di (1 sampai n-1):

jika larik[j-1] > larik[j]:

untuk saya di (0 hingga n-1):

BubbleSort (array dengan panjang n):

menukar(array[j-1], array[j]) kembalikan susunan

Sortir Gelembung

kompleksitas waktu Apakah yang

dari Penyortiran Gelembung?

(6)

2 6 4 8 3 7 5

Pilih elemen yang tepat untuk menempati tempat ini

2 3 4 8 6 7 5 3 6 4 8 2 7 5

Pilih elemen yang tepat untuk menempati tempat ini Pilih elemen yang tepat untuk menempati tempat ini

3 6 4 8 2 7 5

Sortir Seleksi

(7)

jika larik[j] < larik[min_index]:

indeks_min = j menukar(array[i], array[min_index]) kembalikan susunan

indeks_min = saya

untuk j di (i+1 hingga n-1):

untuk saya di (0 hingga n-1):

SelectionSort (array dengan panjang n):

Sortir Seleksi

Urutan Seleksi?

Apakah yang

kompleksitas waktu

(8)

6 4 8 2 7 5 3

Masukkan elemen berikutnya ke tempat yang tepat

3 6

Tidak disortir

Masukkan elemen berikutnya ke tempat yang tepat

Diurutkan

3 6 4 8 2 7 5

4 8 2 7 5

Masukkan elemen berikutnya ke tempat yang tepat

3 4 6 8 2 7 5

Sortir Penyisipan

(9)

untuk j di (i-1 hingga 0):

jika larik[j] > larik[j+1]:

untuk saya di (1 sampai n-1):

InsertionSort (array dengan panjang n):

menukar(array[j], array[j+1]) kembalikan susunan

Sortir Penyisipan

kompleksitas waktu Apakah yang

Urutan Penyisipan?

(10)

3 6 8 4 2 7 5

5

2

2 7 8 4

7 5

3 4 6 8 3 6

4

2 5 7 2 7 5

3

3 6 8 4

6 8

2 7

Pengulangan Gabungkan Sortir

Kasus dasar

3 6 5

3 6 8 4 2 7 5

Gabungkan Sortir

4 8

Gabungkan Sortir

(11)

Gabungkan (a, b):

kembalikan susunan

hasil[k] = b[j]

jika n == 1:

MergeSort (array dengan panjang n):

j++

hasil kembali

saya++

kalau tidak:

hasil[k] = a[i]

MergeSort (Array kanan)

jika a[i] < b[j]:

larik = Gabung(

MergeSort(Array kiri),

untuk k dalam (0 hingga m-1):

i = 0, j = 0, hasil = []

rightArray = array[n/2+1 hingga n-1]

)

m = panjang(a) + panjang(b)

leftArray = array[0 hingga n/2]

kembalikan susunan

Gabungkan Sortir

Kompleksitas waktu Pengurutan Penggabungan

(12)

3 6 4 8 2 7 5

3 2 5 4 6 8 7 3 6 4 8 2 7 5

Sortir Cepat

Array "Partisi" sedemikian rupa sehingga:

Elemen > pivot di sebelah kanan pivot

• Elemen < pivot ke kiri pivot

Pilih elemen pivot dari array

(13)

array, pivot = partisi(array, pivot) array = QuickSort(array, kiri, pivot - 1) array = QuickSort(array, pivot + 1, kanan) kembalikan susunan

kembalikan susunan poros = kiri

jika kiri >= kanan:

QuickSort (array, kiri, kanan):

Sortir Cepat

dari QuickSort akan menjadi

dibahas nanti!

kompleksitas waktu Algoritma partisi dan

(14)

! Algoritma

Mencari

(15)

• Untuk beberapa algoritma pencarian, array harus diurutkan

Jika tidak, keluaran -1

• Keluaran: Jika x ada dalam array, keluarkan indeks x

• Input: Array dengan panjang n dan angka x

• Operasi dasar: Perbandingan

Masalah Pencarian

(16)

jika larik[i] == x:

kembalikan saya

untuk saya di (0 hingga n - 1):

LinearSearch(array dengan panjang n, x):

kembali -1

Pencarian Linier

kompleksitas waktu Apakah yang

Pencarian Linier?

(17)

Jika sama, algoritma selesai

Jika x lebih tinggi, cari secara rekursif ke kanan Bandingkan x dengan elemen tengah

Input: Array yang diurutkan dan x

Pencarian Biner

2 3 4 5 6 7 8

6

2 3 4 5 6 7 8

6

6 7 8

6

(18)

indeks_tengah = (kiri + kanan) / 2

kembalikan indeks_tengah jika x == larik[indeks_tengah]:

kembalikan BinarySearch(array, x, mid_index+1, kanan) jika kiri > kanan:

kembali -1

x, kiri, kanan):

BinarySearch(array yang diurutkan dengan panjang n,

lain jika x > array[mid_index]:

Pencarian Biner

akan di diskusikan Nanti!

Pencarian Biner

Kompleksitas waktu

(19)

Minggu depan: Notasi Asimptotik

Terima kasih untuk mendengarkan!

Itu saja untuk hari ini!

Referensi

Dokumen terkait

4.3 Data Pengamatan Hubungan Estimasi DOA Menggunakan Algoritma ESPRIT Terhadap Jarak Antar Elemen Antena Array

- Jika suatu barisan yang terdiri dari n elemen yang ditempatkan dalam suatu array dan urutan yang diinginkan adalah urutan yang tidak turun (non decreasing) maka dapat

 Insertion sort merupakan algoritma sorting yang membandingkan elemen yang ada di dalam array hanya 1 kali cek saja..  Cara kerja

Adapun tujuan dari penulisan Tugas Akhir ini adalah untuk menganalisis pengaruh jumlah elemen array terhadap speed of convergence algoritma LMS.. 1.4

Selection sort merupakan salah satu algoritma pengurutan yang bekerja dengan cara mencari elemen dengan nilai terkecil pada sebuah array dan memindahkannya

Mahasiswa mampu mengembangkan beberapa algoritma untuk memanipulasi beberapa elemen list (berbasis array, linked list dan doubly linked list) serta dapat menjelaskan

Jika suatu barisan yang terdiri dari n elemen yang ditempatkan dalam suatu array dan urutan yang diinginkan adalah urutan yang tidak turun (non decreasing) maka dapat digunakan

dest adalah sebagai array yang menyimpan urutan indeks dari myarray, dengan kata lain, indeks dari myarray yang telah diurutkan menjadi elemen dari dest. Pada hasil