MENYIGI PENGGUNAAN METODE SHELLSORT DALAM PENGURUTAN DATA

dokumen-dokumen yang mirip
SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 12 & 13

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-8 Pengurutan (Sorting) 1

oleh : Edhy Suta tanta

Sorting Algorithms. Definisi

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 14 & 15

Algoritma Sorting. Ahmad Kamsyakawuni, S.Si, M.Kom. Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Jember

STRUKTUR DATA SORTING ARRAY

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

Simulasi Pengurutan Data Dengan Metode Seleksi

Algoritma dan Struktur Data. Searching dan Sorting

Modul 8 SORTING (PENGURUTAN)

Pengurutan (Sorting) Algoritma Pemrograman

STRUKTUR DATA (3) sorting array. M.Cs

JURNAL TEKNOLOGI INFORMASI & PENDIDIKAN ISSN : VOL. 6 NO. 1 Maret 2013

BAB VII PENCARIAN DATA (SEARCHING)

PERTEMUAN 10 METODE DEVIDE AND CONQUER

BAB I PENDAHULUAN.

PERTEMUAN 10 METODE DEVIDE AND CONQUER

ANALISIS PERBANDINGAN ALGORITMA BUBBLE SORT, MERGE SORT, DAN QUICK SORT DALAM PROSES PENGURUTAN KOMBINASI ANGKA DAN HURUF

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Algoritma dan Struktur Data

ALGORITMA PENGURUTAN & PENCARIAN

Gambar 13.1 Ilustrasi proses algoritma sorting

ANALISIS PERBANDINGAN METODE ALGORITMA QUICK SORT DAN MERGE SORT DALAM PENGURUTAN DATA TERHADAP JUMLAH LANGKAH DAN WAKTU

Bubble Sort dan Shell-Sort. Yuliana Setiowati

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

7. SORTING DAN SEARCHING

BAB 8 SORTING DAN SEARCHING

BAB VI Pengurutan (Sorting)

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

ANALISIS PERBANDINGAN ALGORITMA METODE PENGURUTAN QUICKSORT, METODE PENGURUTAN SELECTIONSORT DAN METODE PENGURUTAN HEAPSORT

for (Awal; Akhir; Peningkatan) Perintah

SORTING. Hartanto Tantriawan, S.Kom., M.Kom

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

Kontrak Perkuliahan & Introduction

BAB 8 SORTIR. Pengurutan data (sorting) adalah suatu proses untuk menyusun kembali himpunan obyek menggunakan aturan tertentu.

BAHAN AJAR. Mata Kuliah Struktur Data. Disusun oleh: Eva Yulianti, S.Kom.,M.Cs

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

SORTING (PENGURUTAN DATA)

MODUL IV PENCARIAN DAN PENGURUTAN

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

STRATEGI DIVIDE AND CONQUER

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Algoritma Sorting (Selection Insertion)

BAB VI SORTIR ATAU PENGURUTAN

Jurnal Mahajana Informasi, Vol.1 No 2, 2016 e-issn: SIMULASI PENGURUTAN DATA DENGAN ALGORITMA HEAP SORT

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

RENCANA PEMBELAJARAN SEMESTER (RPS)

: Algoritma dan Pemrograman I Modul Praktikum ke : 08

Analisis Kecepatan Sorting Dengan Notasi Big O

Pengertian Algoritma Pengurutan

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Kompleksitas Algoritma Sorting yang Populer Dipakai

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-9 Pengurutan (Sorting) 2

SATUAN ACARA PENGAJARAN (SAP) : Aswir Premadi, S.T., M.Sc. (Eng) Pertemuan Minggu ke : 1 & 2 ( 1 x 2 x 50 )

: Algoritma dan Pemrograman I Modul Praktikum ke : 08

: Algoritma dan Pemrograman I Modul Praktikum ke : 08

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

SILABUS : DESAIN DAN ANALISIS ALGORITMA. : I Ketut Resika Arthana, S.T., M.Kom NIP :

Sorting Algorithms. Buble Sort

Sorting Algorithms. Divide and Conquer

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

Algoritma Transposisi (Bubble Sort/pengurutan gelembung)

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

RENCANA PEMBELAJARAN SEMESTER (RPS)

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

Penggunaan Metode Binary Search Pada Translator Bahasa Indonesia Bahasa Jawa

ALGORITMA DAN PEMROGRAMAN

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

BAB 1 PENDAHULUAN Latar Belakang

BAB VII ALGORITMA DIVIDE AND CONQUER

Politeknik Elektronika Negeri Surabaya

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

Penerapan Algoritma Bucket Sort Untuk melakukan Pengurutan n buah Bilangan Mata Kuliah Pemrosesan Paralel

BAB XIII MENGECEK KESAMAAN DUA VEKTOR

: Algoritma dan Pemrograman I Modul Praktikum ke : 09

Fakultas Teknologi Informasi

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Sub Pokok Bahasan dan Sasaran Belajar

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

Dibawah ini contoh flowchart, algoritma dan program Pemilihan/Selection, apabila bilangan N habis dibagi P maka berkomentar Benar

TEORI DAN PRAKTEK PEMROGRAMAN TURBO PASCAL/Edhy

Algoritma Bubble Sort dan Quick Sort

Materi 4: SORTING (PENGURUTAN) Dosen:

: Algoritma dan Pemrograman I Modul Praktikum ke : 09

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

Perbandingan Algoritma Pencarian Kunci di dalam Himpunan Terurut Melalui Linear Search dan Binary Search

Algoritma dan Pemrograman Format Laporan dengan Pascal

APLIKASI SIMULASI METODE PENCARIAN LINIER, BINER DAN INTERPOLASI SEBAGAI MEDIA PEMBELAJARAN

PENERAPAN TEORI GRAF UNTUK MENYELESAIKAN MASALAH MINIMUM SPANNING TREE (MST) MENGGUNAKAN ALGORITMA KRUSKAL

STRUKTUR DATA TFP 1502

Struktur Kontrol. (Repetition)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

- Perintah SWICTH memiliki bentuk umum sebagai berikut :

PENGURUTAN (SORTING) 1. Overview

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

SORTING ARRAY FAKULTAS TEKNOLOGI INFORMASI UNISBANK SEMARANG : ANDY KRISTIANTO : Disusun Oleh :

Transkripsi:

MENYIGI PENGGUNAAN METODE SHELLSORT DALAM PENGURUTAN DATA Edhy Sutanta Jurusan Teknik Informatika, Fakultas Teknologi Industri, Institut Sains & Teknologi AKPRIND Yogyakarta Jl. Kalisahak 28, Komplek Balapan, Yogyakarta 55222 Phone: 0274-563029-121, Fax: 0274-563847, e-mail: edhy@akprind.ac.id Abstract Sorting is an important data operation on data processing. Many sorting algorithms was developed, there are straight selection, buble-sort (exchange sort), straight insertion, binary insertion, Shellsort (diminishing increment sort), quick sort (partition exchange sort), Radix sort and merge sort (two-ways merge sort). The aim of this research is analyzing the possibility of error of Shellsort on sorting algorithm and getting alternative solutions to repair the algorithm that make the valid data sorting. The research will analyze the cases of data sorting by Turbo Pascal. The results of this research showed that Shellsort algorithm using start interval N div 2 and comparing them on the value of data have got unvalid data sorting. So, it is two alternative solutions found from the research. Keywords: sorting, Shellsort algorithm, N div 2. Pendahuluan Pengurutan data atau sorting merupakan salah satu jenis operasi penting dalam pengolahan data. Hampir setiap saat dalam kehidupan sehari-hari, selalu dijumpai permasalahan-permasalahan yang harus diselesaikan dengan melibatkan operasi pengurutan data. Begitu pentingnya operasi tersebut, sehingga sampai saat ini telah banyak dikembangkan metode-metode pengurutan data. Pada dasarnya terdapat dua macam data urut, yaitu urut naik (ascending) dan urut turun (descending). Contoh sekumpulan data urut naik dan urut turun, adalah sebagai berikut : Urut naik : 40 47 51 52 69 70 72 84 90 Urut turun : 90 84 72 70 69 52 51 47 40 Hingga saat ini telah dikenal beberapa metode pengurutan data, antara lain seleksi langsung (straight selection), gelembung (buble-sort atau exchange sort), penyisipan langsung (straight insertion), penyisipan biner (binary insertion), Shellsort (diminishing increment sort), quick sort (partition exchange sort), radix sort serta merge sort (two_way merge sort). Penelitian ini akan menganalisis kemungkinan adanya kelemahan metode Shellsort, dan selanjutnya mencari alternatif perbaikan terhadap prosedur dalam metode tersebut, sehingga diperoleh jaminan bahwa penggunaan metode yang sudah diperbaiki tersebut akan memberikan hasil berupa data yang benar-benar urut. Hasil penelitian ini diharapkan memberikan masukan bagi pemrogram aplikasi agar terhindar dari kesalahan hasil operasi saat menerapkan metode Shellsort. Tinjauan Pustaka Metode Shellsort (diminishing increment) pertama kali dikenalkan pada tahun 1959 oleh Donald L.Shell. Proses pengurutan data dengan metode ini secara ringkas dapat dijelaskan sebagai berikut ini. Untuk mengurutkan sebuah vektor yang memuat N elemen data secara ascending, mula-mula data pertama dibandingkan dengan data pada jarak tertentu dari data pertama tersebut, misal N/6 atau N-5, N-4, N-3, N-2, atau N-1. Jika data pertama lebih besar, maka posisi data saling ditukarkan. Berikutnya, data kedua dibandingkan dengan data pada jarak yang sama sebagaimana dilakukan pada data pertama. Lakukan pertukaran data jika diperlukan. Demikian seterusnya proses perbandingan dan pertukaran data dilakukan pada seluruh data (data ke-n) [6,7,8,11,13].

Pengurutan data secara ascending dengan metode Shellsort dapat dituliskan seperti di bawah ini. [Pengurutan elemen menggunakan metode Shellsort. Masukan dinyatakan sebagai vektor K (belum terurutkan) dan N (banyak elemen). Keluaran adalah vektor K yang sudah dalam keadaan erurutkan.] Langkah 0 Baca vektor yang akan diurutkan (dalam program utama) Langkah 1 Tentukan: JARAK = N div 2 Langkah 2 Kerjakan langkah-3 selama JARAK > 0 Langkah 3 Kerjakan langkah 4 dan langkah 5 untuk I=1 sampai N-JARAK Langkah 4 Tentukan J = I + JARAK Langkah 5 Test: apakah K[I] > K[J]? Jika ya, tukarkan nilai kedua elemen ini Langkah 6 Tentukan JARAK = JARAK div 2 Langkah 7 Selesai Metodologi Penelitian Penelitian dilakukan dengan cara pengujian contoh-contoh kasus pengurutan data menggunakan simulasi program aplikasi komputer dengan bahasa Turbo Pascal. Langkah-langkah yang dilakukan dalam penelitian ini adalah: 1. Memahami prosedur pengurutan data dengan metode Shellsort dari berbagai literatur dan referensi 2. Mengembangkan program aplikasi komputer sesuai dengan prosedur dalam metode Shellsort yan dikenal selama ini 3. Menguji program aplikasi untuk beberapa kasus pengurutan data yang berbeda 4. Menganalisis kemungkinan terjadinya kesalahan hasil operasi pengurutan data 5. Mengembangkan alternatif perbaikan prosedur metode Shellsort 6. Menguji prosedur hasil perbaikan untuk beberapa kasus pengurutan data 7. Menyusun dokumentasi laporan penelitian Analisis dan Pembahasan Perancangan Program Aplikasi Untuk mempermudah analisis dalam penelitian ini, perlu dikembangkan alat bantu berupa program aplikasi komputer yang akan dikembangkan dengan bahasa Turbo Pascal. Program aplikasi dibuat dalam dua versi, yaitu versi pertama untuk prosedur asli dan versi kedua untuk hasil perbaikan. Untuk masingmasing versi, program aplikasi dirancang dalam tiga modul sebagai berikut: 1. INPUT DATA, modul ini berfungsi untuk pemasukan data sumber 2. PROSES, modul ini berfungsi untuk proses pengurutan data secara ascending 3. CEK HASIL, modul ini berfungsi untuk menampilkan informasi pengecekan hasil pengurutan data. Bagian ini mempunyai dua kemungkinan hasil, yaitu hasil proses pengurutan ascending sudah benar, yaitu jika hasil pengurutan data benar-benar memberikan hasil data urut ascending. Kemungkinan kedua adalah bahwa hasil pengecekan ternyata masih memuat adanya kesalahan hasil operasi, yaitu belum menghasilkan data urut ascending Analisis Prosedur Metode Shellsort Versi Pertama Proses pengurutan data dengan metode Shellsort secara ringkas dapat dijelaskan sebagai berikut ini. Untuk mengurutkan sebuah vektor yang memuat N elemen data secara ascending, mula-mula data pertama dibandingkan dengan data pada jarak tertentu dari data pertama tersebut. Jarak yang digunakan pada langkah pertama umumnya adalah N div 2, artinya data pertama (=K[1]) akan dibandingkan dengan data pada urutan ke-n div 2 (=K[N div 2]). Jika K[1]>K[N div 2], maka posisi data saling ditukarkan. Berikutnya, K[2] dibandingkan dengan data pada jarak yang sama sebagaimana dilakukan pada data pertama, yaitu K[N div 2+1]. Lakukan pertukaran data jika K[2]<K[N div 2+1]. Demikian seterusnya proses perbandingan dan pertukaran data dilakukan pada seluruh data, hingga K[N]. Pada langkah kedua, proses perbandingan dan pertukaran data seperti di atas diulang kembali dengan jarak yang lebih kecil, yaitu N div 2-1. Untuk langkah ketiga perbandingan dilakukan dengan jarak N div

2-2. Demikian seterusnya, proses perbandingan dan pertukaran dilakukan dengan menggunakan jarak yang semakin diperkecil. Proses akan dihentikan hingga jarak perbandingan antar data sama dengan satu (JARAK=1). Dalam kondisi demikian ini, maka semua data dalam vektor N telah selesai diproses. Untuk menguji validitas prosedur dalam metode Shellsort versi pertama yaitu yang dikenal selama ini, maka diuji untuk 100 kasus pengurutan data numerik. Hasil pengujian ini menunjukkan bahwa dalam contoh kasus pengurutan data dalam vektor K yang memuat 7 elemen data numerik, yaitu: 7 3 2 5 4 1 6 Selanjutnya, vektor K akan diurutkan secara ascending menggunakan prosedur Shellsort. JARAK yang digunakan pada langkah pertama adalah N div 2 atau 9 div 2 = 4. Langkah pengurutannya adalah sebagai berikut: Langkah 1: JARAK : 7 div 2 = 3 Data : 7 3 2 5 4 1 6 Dengan jarak 3, maka akan diperoleh hasil sebagai berikut: Data : 5 3 1 6 4 2 7 Langkah 2: JARAK : 3-1 = 2 Data : 5 3 1 6 4 2 7 Dengan jarak 2, maka akan diperoleh hasil sebagai berikut: Data : 1 3 4 2 5 6 7 Langkah 3: JARAK : 2-1 = 1 Data : 1 3 4 2 5 6 7 Dengan jarak 3, maka akan diperoleh hasil sebagai berikut: Data : 1 3 2 4 5 6 7 Berdasarkan contoh di atas, maka ternyata dijumpai adanya kesalahan hasil pengurutan pada vektor K. Hasil akhir yang diperoleh adalah vektor baru yang memiliki urutan sebagai berikut: 1 3 2 4 5 6 7 Hasil yang benar dan seharusnya diperoleh adalah: 1 2 3 4 5 6 7 Terlihat, bahwa elemen data 3 menempati pada urutan kedua dan elemen data 2 justru menempati urutan ketiga. Seharusnya elemen data 2 menempati pada urutan kedua dan elemen data 3 menempati urutan ketiga. Kasus ini menunjukkan bahwa penggunaan prosedur Shellsort yang umumnya digunakan selama ini, yaitu menggunakan jarak N div 2 sebagai jarak perbandingan pada langkah pertama, (N div 2)-1 sebagai jarak perbandingan pada langkah kedua, (N div 2)-2 sebagai jarak perbandingan pada langkah ketiga, dan seterusnya hingga akhirnya proses dihentikan setelah JARAK=1 selesai diproses, ternyata masih memberikan hasil yang salah. Permasalahan dan Alternatif Perbaikan Penyebab terjadinya kesalahan hasil pengurutan dengan menggunakan metode Shellsort dalam contoh kasus di atas adalah penetapan jarak perbandingan antar data, utamanya pada penetapan jarak pada langkah pertama. Oleh karena itu, maka solusi perbaikan yang dilakukan adalah difokuskan pada penyebab terjadinya kesalahan tersebut. Alternatif perbaikan yang dapat dilakukan untuk menghindari kesalahan hasil pengurutan menggunakan metode Shellsort adalah sebagai berikut [9,10]: 1. Jarak perbandingan adalah dimulai pada nilai ((N div 2)+1) bukan (N div 2), pada langkah selanjutnya (N div 2), ((N div 2)-1), ((N div 2)-2) dan seterusnya

2. Jarak perbandingan untuk langkah pertama adalah dimulai pada nilai (N-1) bukan (N div 2), pada langkah selanjutnya (N-2), (N-3), dan seterusnya Alternatif 1 dan alternatif 2 dapat diimplementasikan ke dalam program aplikasi dengan modifikasi prosedur pengurutan. Prosedur Perbaikan Alternatif 1 Algoritma prosedur perbaikan alternatif 1 adalah sebagai berikut [9]: Masukan vektor K yang memuat N buah data yang akan diurutkan. Data-data yang akan diurutkan dibaca sebagai K. 1. Mulai 2. Tentukan harga awal jarak perbandingan data JARAK = (N div 2)+1 3. Proses berulang langkah-4 s/d langkah-7 While JARAK >= 1 4. Proses berulang langkah-5 s/d langkah-6 untuk mengurutkan data For I = 1 To N-JARAK 5. Tentukan J = I + JARAK 6. Bandingkan antar data If K[I] > K[J] Jika ya, tukarkan posisi kedua data BANTU = K[I] K[I] = K[J] K[J] = BANTU 7. Tentukan jarak baru untuk langkah berikutnya JARAK = JARAK-1 8. Cetak hasil 9. Selesai Prosedur Perbaikan Alternatif 2 Algoritma prosedur perbaikaan alternatif 2 adalah sebagai berikut [9]: Masukan vektor K yang memuat N buah data yang akan diurutkan. Data-data yang akan diurutkan dibaca sebagai X. 1. Mulai 2. Tentukan harga awal jarak perbandingan data JARAK = N-1 3. Proses berulang langkah-4 s/d langkah-7 While JARAK >= 1 4. Proses berulang langkah-5 s/d langkah-6 untuk mengurutkan data For I = 1 To N-JARAK 5. Tentukan J = I + JARAK 6. Bandingkan antar data If K[I] > K[J] Jika ya, tukarkan posisi kedua data BANTU = K[I] K[I] = K[J] K[J] = BANTU 7. Tentukan jarak baru untuk langkah berikutnya JARAK = JARAK-1 8. Cetak hasil 9. Selesai

Pengujian Prosedur Perbaikan Alternatif 1 Untuk menguji validitas prosedur perbaikan alternatif 1, maka contoh pengurutan data yang salah sebelumnya akan diselesaikan menggunakan alternatif 1. Vektor K yang akan diurutkan memuat 7 elemen data numerik, yaitu: 7 3 2 5 4 1 6 Secara ringkas, prosedur pengurutan data secara ascending menggunakan prosedur perbaikan alternatif 1 ditampilkan dalam Tabel I. Tabel I. Contoh pengurutan data ascending dengan alternatif 1 Iterasi ke JARAK Hasil proses 0-7 3 2 5 4 1 6 1 4 4 1 2 5 7 3 6 2 3 4 1 2 5 7 3 6 3 2 2 1 4 3 6 5 7 4 1 1 2 3 4 5 6 7 Hasil perbaikan prosedur pada alternatif 1 selanjutnya juga diuji untuk 100 kasus pengurutan data numerik random, dan menunjukkan bahwa hasil operasi pengurutan data telah memberikan hasil yang benar. Pengujian Alternatif 2 Untuk menguji validitas prosedur perbaikan alternatif 2, maka contoh pengurutan data yang salah sebelumnya akan diselesaikan menggunakan alternatif 2. Vektor K yang akan diurutkan memuat 7 elemen data numerik, yaitu: 7 3 2 5 4 1 6 Secara ringkas, prosedur pengurutan data secara ascending menggunakan prosedur perbaikan alternatif 2 ditampilkan dalam Tabel II. Tabel II. Contoh pengurutan data ascending dengan alternatif 2 Iterasi ke JARAK Hasil proses 0-7 3 2 5 4 1 6 1 6 6 3 2 5 4 1 7 2 5 1 3 2 5 4 6 7 3 4 1 3 2 5 4 6 7 4 3 1 3 2 5 4 6 7 5 2 1 3 2 5 4 6 7 6 1 1 2 3 4 5 6 7 Hasil perbaikan prosedur pada alternatif 1 selanjutnya juga diuji untuk 100 kasus pengurutan data numerik random, dan menunjukkan bahwa hasil operasi pengurutan data telah memberikan hasil yang benar. Implementasi Program Aplikasi Implementasi ke dalam program aplikasi komputer untuk alternatif 1 dan alternatif 2 dapat dilakukan dengan cara melakukan modifikasi pada nilai variabel JARAK yang digunakan pada langkah pertama. Sedangkan bagian lain relatif sama dengan metode Shellsort versi pertama. Selanjutnya, hasil implementasi program aplikasi untuk alternatif 1 dan alternatif 2 dapat saling dibandingkan. Alternatif 1 memiliki kelebihan dalam hal kecepatan. Cacah proses perulangan dalam alternatif 1 lebih sedikit dibandingkan alternatif 2. Hal ini berarti, bahwa efisiensi waktu proses pengurutan alternatif 1 lebih baik dibandingkan alternatif 2. Namun demikiam, alternatif 1 relatif kurang aman dibandingkan alternatif 2. Sekalipun alternatif 2 lebih lambat dan tidak efisien, namun alternatif 2 jauh lebih aman dibandingkan alternatif 1. Dalam kondisi cacah data sangat besar, maka alternatif 1 lebih baik digunakan daripada alternatif 2. Dalam hal waktu proses dapat diabaikan (bukan menjadi permasalahan utama), maka alternatif 2 lebih baik dibandingkan alternatif 1.

Kesalahan hasil pengurutan data dengan metode Shellsort versi pertama yang dikenal selama ini juga bisa terjadi pada pengurutan descending, dan perbaikannya dapat dilakukan dengan cara yang sama dengan alternatif solusi 1 dan 2, tetapi penukaran akan dilakukan jika nilai data pada urutan lebih awal kurang dari nilai data pada urutan yang lebih akhir. Prosedur perbaikan alternatif 1 dan alternatif 2 selanjutnya juga dapat dikembangkan untuk berbagai macam tipe data, tidak terbatas untuk data numerik, serta untuk pengurutan data secara ascending maupun descending. Kesimpulan Berdasarkan hasil penelitian ini, maka dapat disimpulkan sebagai berikut: 1. Prosedur Shellsort versi pertama yang umumnya digunakan, dengan menggunakan jarak awal N div 2 sebagai JARAK awal untuk perbandingan antar data ternyata masih mungkin menimbulkan kesalahan pada hasil operasi pengurutan. 2. Alternatif perbaikan yang dapat dilakukan untuk menghindari kesalahan tersebut adalah dapat dipilih salah satu di antara dua alternatif berikut: a. Alternatif 1: Jarak perbandingan pertama kali dimulai pada posisi ((N div 2)+1) bukan (N div 2), pada langkah selanjutnya (N div 2), ((N div 2)-1), ((N div 2)-2) dan seterusnya b. Jarak perbandingan untuk langkah pertama adalah dimulai pada nilai (N-1) bukan (N div 2), selanjutnya menggunakan jarak (N-2), (N-3), dan seterusnya 3. Alternatif 1 memiliki kelebihan dalam hal kecepatan dibandingkan alternatif 2. Namun demikian, alternatif 1 relatif kurang aman dibandingkan dengan alternatif 2. Sekalipun alternatif 2 relatif lebih lambat dan tidak efisien, namun alternatif 2 relatif lebih aman dibandingkan dengan alternatif 1. Dalam kondisi cacah data sangat besar, maka alternatif 1 lebih baik digunakan daripada alternatif 2. Dalam hal waktu proses bukan menjadi permasalahan utama, maka alternatif 2 akan lebih baik dibandingkan dengan alternatif 1. Daftar Pustaka [1]. Behforooz, A. and Holoien, M.O. (1986), Problem Solving and Structured Programming with PASCAL, Brooks/Cole Publishing Co., A Division of Wadworth Inc., California [2]. Brand, K.W. (1986), Problem Solving with PASCAL, Kent Publishing Co., A Division of Wadworth Inc., USA [3]. Goodman, SE. and Hedetniemi, S.T. (1985), Introduction to the Design and Analysis of Algorithms, Mc.Graw_Hill Int l Book Co. [4]. Lipshutz, M.M. and Lipschutz, S. (1982), Theory and Problems of Data Processing, Schaum s Outline Series, McGraw_Hill Int l Book Co. [5]. Lisanti, B., Mann, L. and Zlotnick, F. (1987), Algorithms, Programming, Pascal, Wardworth Publishing Co., California [6]. Pranata, A. (2000), Algoritma dan Pemrograman, edisi 2, J&J Learning, Yogyakarta [7]. Santosa, P.I. (1989), Pemrograman Pascal Tingkat Lanjut & Pengantar Struktur Data Menggunakan Tubo Pascal 5.0, edisi 1, cetakan ke-1, Andi Offset, Yogyakarta [8]. Santosa, P.I. (1994), Program-Program Terapan Menggunakan Quick Basic, edisi 2, Andi Offset, Yogyakarta [9]. Sutanta, E. (2004), Menyigi Penggunaan Metode Shellsort Dalam Pengurutan Data, Laporan Penelitian, IST AKPRIND, Yogyakarta [10]. Sutanta, E. (2004), Algoritma: Teknik Penyelesaian Permasalahan Untuk Komputasi, edisi 1, Graha Ilmu, Yogyakarta [11]. Sutedjo, B. dan Michael AN (1997), Algoritma dan Teknik Pemrograman, Konsep, Implementasi, dan Aplikasi, edisi 1, Andi, Yogyakarta [12]. Trembly, J.P. and Bunt, R.B. (1981), An Introduction to Computer Science an Algorithmic Approach, Int l Student edition, McGraw_Hill Int l Book Co., Singapore [13]. Wirth, N. (1997), Algoritma+Struktur Data=Program, edisi 1 (terjemahan), Andi, Yogyakarta