Searching & Sorting Searching & Sorting
Pertemuan Pertemuan 9 9--10 10 Dosen
Dosen Pembina Pembina Danang
Danang Junaedi Junaedi
Jurusan Teknik Informatika IX/XII - 2 Universitas Widyatama
TUJUAN MATERI TUJUAN MATERI Setelah
Setelah mengikuti mengikuti materi materi pertemuan pertemuan ini, ini, mahasiswa mahasiswa diharapkan
diharapkan dapat dapat
1.
1. MMenjelaskanenjelaskan dandan menggunakanmenggunakan metodemetode pencarianpencarian dalam
dalam menyelesaikanmenyelesaikan masalahmasalah pencarianpencarian data/informasi
data/informasi padapada
KKondisiondisi datadata yangyang tidaktidak terurutterurut
KondisiKondisi datadata terurutterurut 2.
2. MMenjelaskanenjelaskan dandan menggunakanmenggunakan metodemetode untukuntuk mengurutkanmengurutkan data/informasi
data/informasi dalamdalam menyelesaikanmenyelesaikan masalahmasalah pegurutanpegurutan data/informasi
data/informasi
Tujuan Tujuan
Jurusan Teknik Informatika IX/XII - 3 Universitas Widyatama
1.
1. Pencarian pada Data yang Tidak Terurut Pencarian pada Data yang Tidak Terurut
a.
a. Sequential dengan variabel logikaSequential dengan variabel logika
b.
b. Sequential tanpa variabel logikaSequential tanpa variabel logika
c.
c. SentinelSentinel 2.
2. Pencarian pada Data yang Terurut Pencarian pada Data yang Terurut
a.
a. Sequential tanpa variabel logikaSequential tanpa variabel logika b.
b. Binary search/dikotomikBinary search/dikotomik 3.
3. SortingSorting a.
a. Bubble Sort Bubble Sort b.
b. Selection SortSelection Sort c.
c. Insertion SortInsertion Sort
Lingkup Materi Lingkup Materi
Jurusan Teknik Informatika IX/XII - 4 Universitas Widyatama
Searching (1) Searching (1)
Tujuan : mencari suatu nilai/elemen dalam Tujuan : mencari suatu nilai/elemen dalam kumpulan nilai (yang disimpan dalam array, list kumpulan nilai (yang disimpan dalam array, list atau file) yang sudah diketahui
atau file) yang sudah diketahui
Jenis Jenis
Searching pada Data Tidak TerurutSearching pada Data Tidak Terurut
Sequential SearchSequential Search
Searching pada Data TerurutSearching pada Data Terurut
Sequential SearchSequential Search
Binary Search/Pencarian Bagi Dua/ Dikotomik SearchBinary Search/Pencarian Bagi Dua/ Dikotomik Search
Jurusan Teknik Informatika IX/XII - 5 Universitas Widyatama
SEQUENTIAL SEARCH
Pencarian pada Data yang Tidak Terurut
Disini proses pencarian dilakukan secara beruntun dari data pertama sampai data terakhir.
Pencarian pada Data yang Terurut
Disini proses pencarian dapat dilakukan secara berurutan dari data pertama sampai data terakhir atau tidak berurutan.
Masalah :
Diketahui sebuah array A[1..10] yang berisi data integer dengan kondisi tidak terurut. Buat algoritma untuk mencari nilai X dan beri pesan ditemukan atau tidak nilai tersebut
Jurusan Teknik Informatika IX/XII - 6 Universitas Widyatama
Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut
5
5 10 10 11 11 2 2 8 8 13 13 7 7 20 20 35 35 18 18
• Misalnya, terdapat sebuah array seperti di atas
• Keadaan awal : I 1
• Pencarian dilakukan sampai dengan posisi akhir pada array atau data ditemukan
• Keadaan Akhir :
I akan diisi nomor indeks yang array-nya bernilai X, bila nilai yang dicari ketemu
Jurusan Teknik Informatika IX/XII - 7 Universitas Widyatama
Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut
Judul : Algoritma untuk mencari bilangan X Kamus : ARRAY A[1..10] = array yang menampung data
dalam tabel
I = integer, counter pengulangan
X = integer, variabel yang menampung data yang akan dicari
Algoritma : INPUT X, I 1
WHILE (I < 10) AND ( A[I] <> X) DO
I I + 1 END WHILE IF A[I] = X THEN
OUTPUT ‘Ditemukan di elemen ke-‘,I ELSE
OUTPUT ‘Tidak ditemukan’
END IF
Jurusan Teknik Informatika IX/XII - 8 Universitas Widyatama
Sequential Search (Tanpa Variabel Logika) untuk kondisi data terurut
• Misalnya, terdapat sebuah array seperti di atas
• Keadaan awal : I 1
• Pencarian dilakukan selama nilai dalam array < nilai yang dicari
• Keadaan Akhir :
I akan diisi nomor indeks yang array-nya bernilai X, bila nilai yang dicari ketemu
2
2 5 5 7 7 8 8 10 10 11 11 13 13 18 18 20 20 35 35
Jurusan Teknik Informatika IX/XII - 9 Universitas Widyatama
Sequential Search (Tanpa Variabel Logika) untuk kondisi data terurut
• Misalnya, terdapat sebuah array seperti di atas
• Keadaan awal : I 1
• Pencarian dilakukan selama nilai dalam array < nilai yang dicari
• Keadaan Akhir :
I akan diisi nomor indeks yang array-nya bernilai X, bila nilai yang dicari ketemu
2
2 5 5 7 7 8 8 10 10 11 11 13 13 18 18 20 20 35 35
Jurusan Teknik Informatika IX/XII - 10 Universitas Widyatama
Sequential Search (Tanpa Variabel Logika) untuk kondisi data terurut
Judul :Algoritma untuk mencari nilai X
Kamus :ARRAY A[1..10] = array yang menampung data I = integer, counter pengulangan
X = integer, variabel yang menampung data yang akan dicari Algoritma :
INPUT X, I 1
WHILE (A[I] < X) and (I <= 10) DO I I + 1
END WHILE IF A[I] = X THEN
OUTPUT ‘Ditemukan di elemen ke-‘,I ELSE
OUTPUT ‘Tidak ketemu’
END IF
Jurusan Teknik Informatika IX/XII - 11 Universitas Widyatama
Searching (2) Searching (2)
Sequential Search Sequential Search Tanpa Variabel Logika Tanpa Variabel Logika
Data Tidak Terurut
Data Tidak Terurut Data TerurutData Terurut scanf(“%d”,&Cari);
scanf(“%d”,&Cari);
i = 1;
i = 1;
while (i <= N && Cari !=
while (i <= N && Cari !=
Barang[i]) Barang[i]) { i++; } { i++; }
(i < N) ? printf("Barang (i < N) ? printf("Barang ditemukan") : printf("Barang tidak ditemukan") : printf("Barang tidak ditemukan");
ditemukan");
scanf(“%d”,&Cari);
scanf(“%d”,&Cari);
i = 1;
i = 1;
while (i <= N && Cari < Barang[i]) while (i <= N && Cari < Barang[i]) { i++; }
{ i++; }
(Barang[i] == Cari) ? (Barang[i] == Cari) ? printf("Barang ditemukan") : printf("Barang ditemukan") : printf("Barang tidak ditemukan");
printf("Barang tidak ditemukan");
Jurusan Teknik Informatika IX/XII - 12 Universitas Widyatama
Sequential Search (Dengan Variabel Logika) untuk kondisi data tidak terurut
• Misalnya, terdapat sebuah array seperti di atas
• Keadaan awal : Found False, I 1
• Pencarian dilakukan sampai dengan posisi akhir pada array atau data ditemukan
• Keadaan Akhir :
Found False, berarti nilai yang dicari tidak ketemu Found True, berarti nilai yang dicari ketemu
I akan diisi nomor indeks yang array-nya bernilai X, bila nilai yang dicari ketemu
5
5 10 10 11 11 2 2 8 8 13 13 7 7 20 20 35 35 18 18
Jurusan Teknik Informatika IX/XII - 13 Universitas Widyatama
Sequential Search (Dengan Variabel Logika) untuk kondisi data tidak terurut
Judul : Algoritma untuk mencari bilangan X
Kamus :ARRAY A[1..10] = array yang menampung data dalam tabel I = integer, counter pengulangan
X = integer, variabel yang menampung data yang akan dicari Found = boolean, variabel logika untuk mengetahui ketemu/tidak nilai
yang akan dicari Algoritma :
INPUT X, I 1, Found False WHILE (I <= 10) AND ( Not Found) DO
IF A[I] = X THEN Found True ELSE
I I + 1 ENDIF END WHILE IF Found THEN
OUTPUT ‘Ditemukan di elemen ke-‘,I ELSE
OUTPUT ‘Tidak ditemukan’
END IF
Jurusan Teknik Informatika IX/XII - 14 Universitas Widyatama
Sequential Search (Tanpa Variabel Logika) untuk kondisi data terurut
• Misalnya, terdapat sebuah array seperti di atas
• Keadaan awal : Found False, I 1
• Pencarian dilakukan selama nilai dalam array < nilai yang dicari
• Keadaan Akhir :
Found False, berarti nilai yang dicari tidak ketemu Found True, berarti nilai yang dicari ketemu
I akan diisi nomor indeks yang array-nya bernilai X, bila nilai yang dicari ketemu
2
2 5 5 7 7 8 8 10 10 11 11 13 13 18 18 20 20 35 35
Jurusan Teknik Informatika IX/XII - 15 Universitas Widyatama
Sequential Search (Dengan Variabel Logika) untuk kondisi data terurut
Judul : Algoritma untuk mencari bilangan X
Kamus :ARRAY A[1..10] = array yang menampung data dalam tabel I = integer, counter pengulangan
X = integer, variabel yang menampung data yang akan dicari Found = boolean, variabel logika untuk mengetahui ketemu/tidak nilai
yang akan dicari Algoritma :
INPUT X, I 1, Found False
WHILE (I <= 10) AND ( Not Found) AND(A[I] < X)DO IF A[I] = X THEN
Found True ELSE
I I + 1 ENDIF END WHILE IF Found THEN
OUTPUT ‘Ditemukan di elemen ke-‘,I ELSE
OUTPUT ‘Tidak ditemukan’
END IF
Jurusan Teknik Informatika IX/XII - 16 Universitas Widyatama
Searching (2) Searching (2)
Sequential Search Sequential Search Dengan Variabel Logika Dengan Variabel Logika
Data Tidak Terurut
Data Tidak Terurut Data TerurutData Terurut scanf(“%d”,&Cari);
scanf(“%d”,&Cari);
i = 1;
i = 1;
ketemu = 0;
ketemu = 0;
while (i <= N && ketemu == 0){
while (i <= N && ketemu == 0){
(Cari == Barang[i]) ? ketemu = 1:
(Cari == Barang[i]) ? ketemu = 1:
i++; } i++; }
(ketemu == 1) ? printf("Barang (ketemu == 1) ? printf("Barang ditemukan") : printf("Barang tidak ditemukan") : printf("Barang tidak ditemukan");
ditemukan");
scanf(“%d”,&Cari);
scanf(“%d”,&Cari);
i = 1;
i = 1;
Ketemu = 0;
Ketemu = 0;
while (i <= N && Cari < Barang[i]
while (i <= N && Cari < Barang[i]
&& ketemu ==0){
&& ketemu ==0){
(Cari == Barang[i]) ? ketemu = 1:
(Cari == Barang[i]) ? ketemu = 1:
i++; } i++; }
(ketemu == 1) ? printf("Barang (ketemu == 1) ? printf("Barang ditemukan") : printf("Barang tidak ditemukan") : printf("Barang tidak ditemukan");
ditemukan");
Jurusan Teknik Informatika IX/XII - 17 Universitas Widyatama
Sequential Search (Sentinel) untuk kondisi data tidak terurut
5
5 10 10 11 11 2 2 8 8 13 13 7 7 20 20 35 35 18 18
• Misalnya, terdapat sebuah array seperti di atas
• Keadaan awal : I 1
• Pencarian dilakukan sampai dengan posisi sentinel. Jika menggunakan sentinel di awal pencarian dilakukan dari posisi paling belakang ke depan, sebaliknya jika menggunakan sentinel di akhir pencarian dilakukan dari depan ke belakang
• Keadaan Akhir :
I akan diisi nomor indeks yang array-nya bernilai X, namun apabila I bukan sentinel berarti nilai X ditemukan
Sentinel di awal Sentinel di akhir
Jurusan Teknik Informatika IX/XII - 18 Universitas Widyatama
Sequential Search (Sentinel) untuk kondisi data tidak terurut {Sentinel adalah elemen fiktif yang dipasang setelah elemen terakhir atau di awal table}
Judul : Algoritma untuk mencari bilangan X
Kamus : ARRAY A[1..11] = array yang menampung data dalam tabel I = integer, counter pengulangan
X = integer, variabel yang menampung data yang akan dicari Found = boolean, variabel logika
Algoritma :
INPUT X, I 1, A[11] X {Sentinel di akhir}
WHILE A[I] <> X DO I I + 1 END WHILE IF I <> 11 THEN
OUTPUT ‘Ditemukan di elemen ke-‘,I ELSE
OUTPUT ‘Tidak ketemu’
END IF
Jurusan Teknik Informatika IX/XII - 19 Universitas Widyatama
Sequential Search (Sentinel) untuk kondisi data terurut
2
2 5 5 7 7 8 8 10 10 11 11 13 13 18 18 20 20 35 35
• Misalnya, terdapat sebuah array seperti di atas
• Keadaan awal : I 1
• Pencarian dilakukan selama nilai dalam array < nilai pada posisi sentinel. Jika menggunakan sentinel di awal pencarian dilakukan dari posisi paling belakang ke depan, sebaliknya jika menggunakan sentinel di akhir pencarian dilakukan dari depan ke belakang
• Keadaan Akhir :
I akan diisi nomor indeks yang array-nya bernilai X, namun apabila I bukan sentinel berarti nilai X ditemukan
Sentinel di awal Sentinel di akhir
Jurusan Teknik Informatika IX/XII - 20 Universitas Widyatama
Sequential Search (Sentinel) untuk kondisi data terurut {Sentinel adalah elemen fiktif yang dipasang setelah elemen terakhir atau di awal table}
Judul : Algoritma untuk mencari bilangan X
Kamus : ARRAY A[1..11] = array yang menampung data dalam tabel I = integer, counter pengulangan
X = integer, variabel yang menampung data yang akan dicari Found = boolean, variabel logika
Algoritma :
INPUT X, I 1, A[11] X {Sentinel di akhir}
WHILE A[I] < A[11] DO I I + 1 END WHILE IF I <> 11 THEN
OUTPUT ‘Ditemukan di elemen ke-‘,I ELSE
OUTPUT ‘Tidak ketemu’
END IF
Jurusan Teknik Informatika IX/XII - 21 Universitas Widyatama
Searching (2) Searching (2)
Sequential Search Sequential Search Dengan Sentinel di awal Dengan Sentinel di awal
Data Tidak Terurut
Data Tidak Terurut Data TerurutData Terurut i = N;
i = N;
j=0;
j=0;
scanf(“%d”,&Barang[j]);
scanf(“%d”,&Barang[j]);
while (i >= 1 && Barang[i] !=
while (i >= 1 && Barang[i] !=
Barang[j]) Barang[j]) { i { i-- --; }; }
(i >= 1) ? printf("Barang (i >= 1) ? printf("Barang ditemukan") :printf("Barang tidak ditemukan") :printf("Barang tidak ditemukan");
ditemukan");
i = N;
i = N;
j=0;
j=0;
scanf(“%d”,&Barang[j]);
scanf(“%d”,&Barang[j]);
while (i >= 1 && Barang[i] <
while (i >= 1 && Barang[i] <
Barang[j]) Barang[j]) { i { i-- --; }; }
(i >= 1) ? printf("Barang (i >= 1) ? printf("Barang ditemukan") :printf("Barang tidak ditemukan") :printf("Barang tidak ditemukan");
ditemukan");
Jurusan Teknik Informatika IX/XII - 22 Universitas Widyatama
Binary Search (Pencarian Bagi Dua)
Merupakan metode pencarian yang diterapkan pada kumpulan data yang telah terurut (terurut menaik atau terurut menurun), yang merupakan syarat mutlak dari proses pencarian yang menggunakan metode ini. Pencarian dilakukan dengan membagi dua larik yang sudah terurut, hal ini dilakukan sampai data tersebut ditemukan (nilai yang dicari adalah nilai yang di tengah)
Ilustrasi metode Binary Search :
• Terdapat suatu larik A yang sudah terurut, dan akan dicari suatu nilai tertentu pada larik tersebut, misalnya nilai X.
Jurusan Teknik Informatika IX/XII - 23 Universitas Widyatama
Binary Search (Pencarian Bagi Dua
Merupakan metode pencarian yang diterapkan pada kumpulan data yang telah terurut (terurut menaik atau terurut menurun), yang merupakan syarat mutlak dari proses pencarian yang menggunakan metode ini.
Pencarian dilakukan dengan membagi dua larik yang sudah terurut, hal ini dilakukan sampai data tersebut ditemukan (nilai yang dicari adalah nilai yang di tengah)
Jurusan Teknik Informatika IX/XII - 24 Universitas Widyatama
Ilustrasi metode Binary Search
Terdapat suatu larik A yang sudah terurut, dan akan dicari suatu nilai tertentu pada larik tersebut, misalnya nilai X
Langkah pertama : bagi dua larik A, yaitu :
Tengah = (Kiri + Kanan)/2
Langkah kedua : bandingkan data yang dicari (misal : X) dengan data larik A[Tengah]
Jika X = A[Tengan], pencarian dihentikan (ketemu).
Jika X > A[T], pencarian dilakukan pada posisi sebelah kanan.
Ubah nilai Kiri menjadi nilai Tengah (Kiri = Tengah), ulangi langkah pertama sampai data ditemukan
Jika X < A[T], pencarian dilakukan pada posisi sebelah kiri.
Ubah nilai Kanan menjadi nilai Tengah (Kanan =Tengah), ulangi langkah pertama sampai data ditemukan
Jurusan Teknik Informatika IX/XII - 25 Universitas Widyatama
Searching (3) Searching (3)
Binary Search Binary Search
kiri = 0;
kiri = 0;
kanan = N kanan = N--1;1;
ketemu = 0;
ketemu = 0;
while (kiri < kanan && ketemu == 0) while (kiri < kanan && ketemu == 0) {
{
tengah = (kiri + kanan) / 2;
tengah = (kiri + kanan) / 2;
if (Barang[tengah] == Cari) ketemu = 1;
if (Barang[tengah] == Cari) ketemu = 1;
else else { {
(Barang[tengah]< Cari) ? kiri = tengah + 1 :kanan = tengah (Barang[tengah]< Cari) ? kiri = tengah + 1 :kanan = tengah -- 1;1;
}}
}}
(ketemu == 1) ? printf("Barang ditemukan") :printf("Barang tidak ditemukan");
(ketemu == 1) ? printf("Barang ditemukan") :printf("Barang tidak ditemukan");
Jurusan Teknik Informatika IX/XII - 26 Universitas Widyatama
SORTING (PENGURUTAN)
DEFINISI PENGURUTAN
Pengurutan (Sorting) adalah suatu proses untuk mengatur sekumpulan data atau objek menurut susunan atau urutan tertentu. Dibedakan menjadi 2 macam, yaitu :
• Pengurutan Internal yaitu pengurutan terhadap sekumpulan data yang disimpan dalam media internal komputer, yang dapat diakses setiap elemennya secara langsung dan disebut juga sebagai pengurutan tabel.
• Pengurutan Eksternal, yaitu pengurutan data yang disimpan dalam memori sekunder, biasanya data berukuran besar sehingga tidak mampu untuk dimuat semuanya dalam memori komputer disebut juga pengurutan arsip (file).
Jurusan Teknik Informatika IX/XII - 27 Universitas Widyatama
Sorting (1) Sorting (1)
Tujuan : menyusun nilai/elemen (biasanya Tujuan : menyusun nilai/elemen (biasanya dalam array atau file) sedemikian rupa dalam array atau file) sedemikian rupa berdasarkan aturan tertentu
berdasarkan aturan tertentu ((ascending/descending ascending/descending))
Jenis Jenis
Internal SortingInternal Sorting
Selection SortSelection Sort
Bubble SortBubble Sort
Insertion SortInsertion Sort
Eksternal SortingEksternal Sorting
Jurusan Teknik Informatika IX/XII - 28 Universitas Widyatama
Maksimum-minimum Sort (Selection Sort)
Didasarkan pada pemilihan elemen maksimum atau minimum larik sebagai basis pengurutan. Gagasannya adalah memilih elemen maksimum/minimum tersebut dengan elemen terujung larik (ujung kiri atau ujung kanan). Selanjutnya elemen terujung tersebut di-isolasi dan tidak disertakan pada proses selanjutnya.
Proses yang sama diulang untuk elemen larik yang tersisa sampai larik terurut.
Jurusan Teknik Informatika IX/XII - 29 Universitas Widyatama
Maksimum Sort :
Ilustrasi Pengurutan : Secara Ascending(terurut dari kecil ke besar)
65 20 5 30 85 40 data asal
65 20 5 30 40 85 langkah 1
40 20 5 30 65 85 langkah 2
30 20 5 40 65 85 langkah 3
5 20 30 40 65 85 langkah 4
5 20 30 40 65 85 langkah 5
Jurusan Teknik Informatika IX/XII - 30 Universitas Widyatama
Ilustrasi pengurutan : Secara Descending (terurut dari besar ke kecil)
65 20 5 30 85 40 data asal
85 20 5 30 65 40 langkah 1
85 65 5 30 20 40 langkah 2
85 65 40 30 20 5 langkah 3
85 65 40 30 20 5 langkah 4
85 65 40 30 20 5 langkah 5
dan sebaliknya dapat dilakukan untuk Mimimum Sort [Coba lakukan
!]
Jurusan Teknik Informatika IX/XII - 31 Universitas Widyatama
Sorting (2) Sorting (2)
Selection Sort Selection Sort menggunakan nilai minimum menggunakan nilai minimum
for(i=0;i<Nfor(i=0;i<N--1;i++)1;i++) {
{ min=i;
min=i;
for(j=i+1;j<N;j++) for(j=i+1;j<N;j++)
if(Barang[j] < Barang[min]) min = j;
if(Barang[j] < Barang[min]) min = j;
Temp = Barang[min];
Temp = Barang[min];
Barang[min] = Barang[i]
Barang[min] = Barang[i]
Barang[i] = Temp;
Barang[i] = Temp;
}}
Jurusan Teknik Informatika IX/XII - 32 Universitas Widyatama
Bubble Sort
Metode ini menggunakan prinsip pengapungan (diinspirasi oleh gelembung sabun yang berada di atas permukaan air).
Elemen larik yang berharga paling kecil “diapungkan”, artinya diangkat keatas (atau ujung kiri larik) melalui proses pertukaran. Proses pengapungan ini dilakukan sampai larik terurut.
Jurusan Teknik Informatika IX/XII - 33 Universitas Widyatama
Ilustrasi Bubble Sort :
15 25 2 7 1 sebelum pengurutan
15 25 2 1 7
15 25 1 2 7 langkah 1
15 1 25 2 7
1 15 25 2 7
1 15 25 2 7
1 15 25 2 7 langklah 2
1 15 2 25 7
1 2 15 25 7
1 2 15 7 25
1 2 15 7 25 langkah 3
1 2 7 15 25
1 2 7 15 25 langkah 4
1 2 7 15 25 hasil pengurutan
Jurusan Teknik Informatika IX/XII - 34 Universitas Widyatama
Sorting (3) Sorting (3)
Bubble Sort Bubble Sort
for(i=0;i<Nfor(i=0;i<N--1;i++)1;i++) {{ for(j=N for(j=N--1;j>=i;j1;j>=i;j----)) {
{
if(Barang[j] < Barang[j if(Barang[j] < Barang[j--1])1]) { //proses pertukaran { //proses pertukaran Temp = Barang[j];
Temp = Barang[j];
Barang[j] = Barang[j Barang[j] = Barang[j--1];1];
Barang[j
Barang[j--1] = Temp;1] = Temp;
}}
}}
}}
Jurusan Teknik Informatika IX/XII - 35 Universitas Widyatama
Insertion Sort
Merupakan metode pengurutan dengan cara menyisipkan elemen larik pada posisi yang tepat. Pencarian posisi ini dilakukan secara sequential. Selama pencarian posisi ini, dilakukan pergeseran elemen larik.
Ilustrasi Insertion Sort : (untuk menghasilkan data terurut dari kecil ke besar)
29 27 10 8 76 21 data asal
27 29 10 8 76 21 langkah 1
10 27 29 8 76 21 langkah 2
8 10 27 29 76 21 langkah 3
8 10 27 29 76 21 langkah 4
8 10 21 27 29 76 langkah 5
Jurusan Teknik Informatika IX/XII - 36 Universitas Widyatama
Sorting (4) Sorting (4)
Insertion Sort Insertion Sort
for(i=1;i<N;i++) for(i=1;i<N;i++) {
{
Temp = Barang[i]
Temp = Barang[i]
j=i j=i--1;1;
Ketemu = 0;
Ketemu = 0;
while (j>=0 && Ketemu == 0) while (j>=0 && Ketemu == 0) {
{
if(Temp < Barang[j]) if(Temp < Barang[j]) {
{
Barang[j+1] = Barang[j];
Barang[j+1] = Barang[j];
jj----;;
}}
else { Ketemu = 1;}
else { Ketemu = 1;}
}}
Barang[j+1] = Temp;
Barang[j+1] = Temp;
}}