Senin, 28 Maret 2022

Kriptografi

 Keamanan sebuah data menjadi hal terpenting untuk selalu dijaga kerahasiaannya. Karena sebuah informasi yang terbuka atau bocor tanpa ada kontrol yang jelas, dapat dimanfaatkan oleh pihak tertentu dengan tujuan yang membahayakan. Untuk itulah saat ini telah dikembangkan berbasis sistem keamanan pada jaringan komputer (cyber security). Dimana, salah satu tools yang banyak digunakan sekarang adalah kriptografi.

Untuk itulah, kali ini kita akan membahas lebih dalam mengenai penggunaan dari kriptografi dan teknik implementasinya dalam dunia cyber security. Sehingga, anda mendapatkan insight baru dan lebih memperhatikan kesehatan komputer anda dari sisi sistem keamanan data secara berkala.

Pengertian Kriptografi

Apa sebenarnya definisi umum dari kriptografi sendiri? Kriptografi berasal dari kata bahasa Yunani, yang berarti kryptos dan graphein. Kryptos berarti rahasia atau tersembunyi, sedangkan graphein artinya menulis. Jadi, secara umum kriptografi merupakan proses menulis atau menyampaikan pesan secara rahasia dan tersembunyi.

Namun, jika kita kaitkan dengan penggunaan teknologi digital, maka kriptografi adalah disiplin ilmu yang mempelajari teknik enkripsi naskah asli (plaintext) yang tersusun acak, dengan memanfaatkan kunci enkripsi sehingga naskah tersebut berubah menjadi teks yang sulit terbaca (ciphertext) oleh user yang tidak memiliki kunci dekripsi.

Selanjutnya, ada istilah kriptografi klasik merupakan teknik cryptography yang pembuatannya tidak memerlukan bantuan komputer dan biasanya menggunakan alat bantu pena, batu, kertas, dan alat tradisional lainnya.

Sejarah Singkat Kriptografi

Dalam sejarah, kriptografi cukup terkenal pada masa kejayaan bangsa Yunani sekitar tahun 400 SM. Alat yang digunakan untuk membuat pesan tersembunyi di masa peradaban Yunani dinamakan scytale. Bentuk dari scytale sendiri adalah batangan silinder dengan terdiri atas kombinasi dari 18 huruf.

Dan di masa kepemimpinan Julius Caesar dari Kerajaan Romawi, penerapan kriptografi menjadi lebih banyak dikarenakan pertimbangan dari stabilitas negara. Sehingga, berdasarkan kedua aspek tersebut, baik klasik maupun modern, cryptography mempunyai tujuan yang sama, yaitu sistem keamanan.

Jenis – Jenis Kriptografi

Selanjutnya, kita akan membahas mengenai jenis dari kriptografi sendiri berdasarkan penggunaanya.

1. Hash Function

Pertama, hash function dipergunakan untuk meringkas data serta mengirimkan penjelasan yang telah dirangkum. Jenis cryptography ini menggunakan persamaan matematika, dimana algoritma akan mengambil nilai numerik sebagai input yang kemudian akan diringkas oleh hash system.

Apabila anda menggunakan metode ini, maka anda tidak memerlukan kunci, dikarenakan fungsi telah disesuaikan dengan tahapan skenario pengiriman data berbasis satu arah (direct).

2. Public Key Cryptography

Public key cryptography adalah konsep perlindungan data yang bersifat revolusioner dalam kurung waktu 300 hingga 400 tahun terakhir, dimana istilah ini sering disebut dengan kunci publik. Public key ini memanfaatkan dua kunci yang saling berhubungan, yaitu kunci publik dan privat.

Public key cryptography dianggap lebih aman jika dibandingkan dengan symmetric key. Pada jenis kriptografi ini sering menggunakan metode RSA, dan beberapa contoh metode yang lain terdapat DSA, PKC, dan teknik kurva elips.

3. Symmetric Key Cryptography

Jenis symmetric key cryptography disebut juga dengan kunci rahasia, yang berarti penerima dan pengirim informasi hanya menggunakan satu kunci untuk melakukan enkripsi data. Jenis kriptografi yang digunakan menggunakan AES (Advanced Encryption System). Pendekatan yang dilakukan oleh symmetric key dianggap lebih efisien daripada menggunakan metode yang lainnya. 

Teknik dan Algoritma Kriptografi

Teknik yang digunakan dalam cryptography adalah metode scrambling, yaitu teknik pengubahan teks biasa menjadi teks sandi. Teknik scrambling tersebut dikenal dengan istilah enkripsi dan dekripsi. Yang mana, terdapat tiga fungsi dasar di dalam algoritma kriptografi sendiri, yaitu key, encryption, dan decryption.

Enkripsi adalah proses penyembunyian sebuah data pesan, dengan cara mengubah plaintext menjadi ciphertext. Dekripsi merupakan kebalikan dari enkripsi, yang berarti bertujuan untuk memahami pesan yang ada agar dapat dibaca oleh user dengan baik. Untuk pengertian dari kunci sendiri berarti teknik yang digunakan untuk melakukan enkripsi dan dekripsi data.

Terdapat berbagai perubahan yang terjadi disesuaikan dengan prioritas teknik yang digunakan untuk melindungi data privasi secara kontinu. Istilah yang sering digunakan adalah modern cryptography. 

Modern Kriptografi

Berikut ini terdapat beberapa petunjuk untuk kebutuhan kriptografi yang dapat dilakukan oleh para kriptografer, diantaranya adalah sebagai berikut.

1. Authentication

Autentikasi merupakan proses dimana pengirim dan penerima dapat mengetahui identitas dari masing – masing sumber data (data source) yang digunakan.

2. Confidentiality

Confidentiality adalah fitur informasi yang terlindungi, dimana apabila ada pihak atau user yang mengakses, sistem tidak dapat diproses atau terkendala dalam hak akses atau wewenang.

3. Integrity

Integritas merupakan fitur dimana pihak pengirim dan penerima tidak dapat merubah data tanpa sepengetahuan kedua belah pihak yang bersangkutan.

4. Non – Repudiation

Non-repudiation adalah keadaan dimana pengirim dan penerima tidak dapat menyangkal atau mencegah tujuannya (goals) untuk mengubah atau menciptakan sebuah informasi.

Kesimpulan

  • Kriptografi adalah teknik menyampaikan pesan secara tersembunyi dengan memanfaatkan fitur enkripsi data.
  • Jenis – jenis dari kriptografi antara lain hash function, symmetric dan public key cryptography. Beberapa state yang berada pada modern cryptography adalah authentication, confidentiality, integrity, serta non-repudiation.
  • Gunakan sistem kriptografi untuk keamanan data anda saat mengakses informasi pada jaringan internet. Sehingga, data anda lebih aman dan tetap terjaga dari adanya spamming atau peretasan informasi secara ilegal.

SECURITY TECHNOLOGI: ACCESS CONTROL DAN AUTHENTICATION

 ACCESS CONTROL

ACCESS CONTROL adalah kumpulan dari metode dan komponen yang dipergunakan untuk melindungi asset informasi. 

Acces kontrol memberikan kemampuan untuk mendikte mana informasi yang bisa dilihat atau dimodifikasi oleh user. 

Yang harus dipersiapkan dalam perencanaan acces control :

Bagaimana caranya membedakan mana informasi yang rahasia atau tidak ?

Metode apakah yang harus kita ambil untuk mengindentifikasi user yang meminta akses ke informasi yang rahasia?

Apa cara terbaik untuk memastikan bahwa memang user yang berhak yang akan mengakses informasi yang rahasia?

Access Control Models

Teknik yang dipilih harus cocok terhadap organisasi agar bisa memberikan tingkat keamanan yang paling maksimum.

Access Control Models:

Mandatory , 

Directional , 

Non-discretionary. (Role Based)


Mandatory Access Control (MAC)

kontrol akses didasarkan pada sistem pelabelan keamanan. Pengguna subyek memiliki izin keamanan dan obyek memiliki label keamanan yang berisi klasifikasi data.

Model ini digunakan dalam lingkungan di mana klasifikasi informasi dan kerahasiaan sangat penting (misalnya, militer).

Definisi Access Control Security

Access control didefinisikan / diimplementasikan sebagai pemberi ijin terhadap sebuah ojek tertentu secara spesifik. Akases control sendiri membatasi orang orang yang akan mengakses objek tersebut. Tanpa adanya akses control, kemungkinan sesuatu (termasuk data) dapat di curi lebih meningkat.


Fungsi Access Control

Fungsi akses control ini juga sebagai hak akses untuk ke suatu daerah. Contohnya saja seperti saat kita pergi ke suatu tempat yang penting / ruang rapat. Tentu banyak macam pengaman yang akan kita temui sebagai akses control sehingga ruang rapat iitu sangat penting hanya untuk kegiatan tertentu dan akses perorangannya sangat dibatasi. Hanya hanya orang tertentu yang dapat mengakses ruang rapat tersebut.


Komponen Access Control

Ada dua macam tipe komponen access control, yaitu :


Authentication

Autentikasi yang dimaksud adalah berupa keaslian suatu dokumen tertentu, dan mengaju kepada verifikasi suatu subjek yang di klaim, benar atau tidaknya subjek tersebut.


 Contoh :


Pada saat kita log in email, tentu biasanya ada password yang harus kita isi, dan bahkan beberapa website memberikan repassword ketika log in, tujuannya adalah untuk mengetahui benar atau tidaknya orang yang sedang me- log in ini adalah pemilik akun sebenarnya.


Authorization

Autorisasi ini berarti izin yang diberikan sebuah system. Hak seseorang dalam memasuki sistem ini sangat dibatasi. Biasanya otorisasi muncul setelah autentikasi.


Contoh :


Pada saat kita sudah masuk ke dalam halaman web tertentu, kita tentu dapat menemukan banyak profile orang (contohnya seperti di halaman facebook). Tetapi meskipun kita sudah masuk ke halaman tersebut, kita tidak mempunyai hak / wewenang untuk menghapus atau mengubah ubah data orang lain di sana.


Tiga metode akses yang ada :

Network Access

Akses yang didapatkan dalam sebuah jaringan website.


System Access

Akses yang diberikan pada sebuah system.


Data Access

Akses yang diberikan saat ingin mengakses data.


Terdapat 4 macam strategy access control :

Discretionary Access Control (DAC)

Pemilik utama akses dapat menentukan siapa yang dapat mengakses miliknya dan dapat menentukan ijin akses.


Mandatory Access Control (MAC)

Sebuah grup/ organisasi yang memberikan ijin akses berdasarkan spesifik level yang ada untuk klasifikasi informasi/ data


Role Based Access Control (RBAC)

Ijin akses yang diberikan tergantung dari role/ peran dia dalam suatu perusahaan / organisasi tertentu.


Misal :


Data gaji karyawan hanya dapat di akses oleh owner, manager, dan bagian finance.


Minggu, 13 Maret 2022

Risk management

 Risk management adalah metode untuk penilaian dan mitigasi resiko terhadap aspek kebutuhan keamanan informasi yang memuat 3 unsur penting yaitu : Confidentiality (kerahasiaan), Integrity (integritas), dan Availability (ketersediaan).

   Penerapan ini berguna untuk mengetahui profil risiko teknologi informasi, analisa terhadap risiko, kemudian mengambil tindakan terhadap risiko tersebut sehingga tidak terjadi dampak-dampak yang nantinya akan timbul oleh risiko tersebut. Manajemen risiko teknologi informasi (IT risk management) merupakan suatu proses identifikasi kerentanan dan ancaman terhadap sumber daya informasi yang digunakan oleh sebuah perusahaan atau organisasi, yang dilakukan oleh manajer IT untuk mencapai tujuan bisnis, mengurangi risiko, dan menyeimbangkan pengeluaran dalam mencapai keuntungan dan melindungi teknologi informasi perusahaan tersebut. Namun dalam pelaksanaannya, terdapat beberapa macam hambatan umum terhadap data dan sistem teknologi informasi yang meliputi :


Kerusakan perangkat keras dan perangkat lunak

Malware (Malicious Software)

• Virus komputer

• Spam, scams, and phishing

• Kesalahan manusia (human error)

Selain hambatan umum tersebut, dalam IT risk management juga mengelola hambatan kriminal terhadap teknologi informasi suatu perusahaan, antara lain yaitu :

1. Hackers, yaitu orang-orang yang secara tidak sah menerobos masuk ke dalam sistem komputer.

2. Fraud, yaitu penggunaan komputer untuk memanipulasi data untuk kepentingan yang melanggar hukum.

3. Denial of service, yaitu serangan online yang membuat pengguna tidak dapat mengakses situs tertentu.

4. Staff dishonesty, yaitu pencurian data atau informasi penting oleh karyawan internal perusahaan.

Jika manajemen risiko diatur dengan baik, proses akan terus menerus identifikasi masalah dan resolusi, maka sistem akan mudah melengkapi sistem lain. Ini termasuk organisasi, perencanaan dan penganggaran, dan kontrol biaya. Hal-hal yang tidak terduga akan berkurang karena penekanan akan menjadi manajemen yang proaktif dan bukan reaktif.

Adapun proses dari manajemen risiko IT yaitu :

1. Mengidentifikasi Risiko

Perusahaan mengungkap, mengenali dan menggambarkan risiko yang mungkin mempengaruhi proyek.

2. Menganalisis Risiko

Ketika risiko sudah diidentifikasi, perusahaan menentukan kemungkinan dan konsekuensi dari setiap risiko yang ada. Perusahaan lalu mengembangkan sebuah pemahaman tentang sifat risiko dan potensi untuk mempengaruhi tujuan dan sasaran proyek .

3. Mengevaluasi Risiko

Perusahaan mengevaluasi risiko dengan menentukan besarnya risiko, yang merupakan kombinasi dari kemungkinan dan konsekuensi. Lalu perusahaan membuat keputusan apakah risiko itu dapat diterima atau tidak.

4. Memantau dan Mempertimbangkan Risiko

Ini adalah proses dimana perusahaan memantau setiap risiko yang ada untuk menghindari risiko yang lebih besar.

Alasan utama mengapa suatu perusahaan perlu untuk menerapkan proses manajemen risiko adalah untuk mendukung misi perusahaan dan melindungi aset dari perusahaan tersebut. Pada IT risk management, erat kaitannya dengan bagaimana implementasi security pada suatu perusahaan sehingga diperlukan pemahaman tentang proses bisnis organisasi dan kemungkinan risiko yang berdampak pada proses bisnis tersebut. Risk management akan sangat membantu manajemen perusahaan untuk menyeimbangkan antara dampak dari risk dan cost yang dibutuhkan untuk meminimalisir risiko tersebut.

Previous Next

View Larger Image

7 Risiko Keamanan IT 

1. Phishing

Phishing merupakan praktik penipuan yang digunakan untuk mendapatkan informasi pribadi atau informasi kartu kredit dari seseorang dengan menjebak mereka melalui penawaran atau menyamar sebagai perusahaan yang memiliki reputasi yang baik.Misalnya, penyerang (attacker) akan mengirimi Anda email yang mengaku berasal dari sumber yang dikenal dan meminta Anda memberikan informasi akun atau kartu kredit Anda.Menurut penelitian dari IBM, lebih dari setengah email semuanya adalah spam. Studi lain mengklaim bahwa 97% orang tidak dapat mengenali serangan ini.

2. Malware

Layaknya phishing, malware adalah masalah keamanan utama untuk bisnis dari semua ukuran. Malware adalah software yang berbahaya yang memasuki komputer Anda melalui drive yang terinfeksi, unduhan dan jaringan yang tidak dapat diandalkan.

Beberapa jenis malware yang terkenal adalah viruses, worms, Trojan horses, ransomware, adware dan spyware. Malware dapat mencuri informasi, merusak data dan mempengaruhi kinerja komputer Anda.

3. Using Outdated Software

Tidak memperbarui software Anda tidak berarti Anda tidak akan mendapatkan versi terbaru, itu berarti Anda mengekspos data Anda terhadap kerentanan keamanan yang dieksploitasi oleh peretas dengan cepat. Selain itu, sistem Anda akan terganggu oleh ketidakcocokan software, masalah kepatuhan dan kinerja yang buruk.

4. Access to Unauthorized Person

Anda akan menghadapi risiko pelanggaran data jika Anda tidak peduli siapa yang mengakses sistem data atau zona sensitif IT Anda. Orang jahat hanya memerlukan flash drive untuk mendapatkan data sensitif Anda.

5. Open Wi-Fi

Jaringan Wi-Fi yang terbuka melibatkan koneksi yang tidak dienkripsi, mesin yang disusupi, atau bahkan hotspot itu sendiri bisa berbahaya yang meninggalkan data pengguna dengan risiko yang besar. Dilaporkan bahwa ada 100.000 Wi-Fi publik tanpa jaminan di seluruh dunia.


6. Ignorant Employees

Terkadang kesalahan atau kelalaian karyawan Anda dapat mendatangkan malapetaka pada data bisnis, jaringan, dan program Anda. Misalnya, beberapa karyawan membiarkan PC mereka tanpa pengawasan terbuka untuk mengunjungi situs dan sumber berbahaya.

Atau mereka dapat menyimpan perangkat yang berisi data sensitif. Untuk itu, harusnya mereka dididik tentang keamanan cyber. Agar kejadian yang tidak diinginkan tidak akan terjadi.


7. Insider Threat

Karyawan yang jahat lebih berbahaya bagi data sensitif Anda daripada ancaman eksternal atau kerentanan teknis. Kerugian dari kejahatan yang dilakukan oleh orang dalam sangat signifikan karena orang-orang ini akrab dengan sistem data perusahaan dan memiliki akses ke akun sensitif

Senin, 07 Maret 2022

Planning for Security

 

 

 

1. Tantangan Keamanan jaringanKeamanan jaringan

 Adalah hal yang harus sangat perhatikan oleh semua user dalam suatu jaringan.Jika kita meremehkan Keamanan jaringan Pada jaringan kita, maka akan berakibat fatal sepertihilangnya data data penting kita dan lainnya. Oleh karena itu tantangan yang harus dilakukan agar jaringan kita aman adalah:

• dan integritas data atau informasi tersebut.b.

• Jaminan ketersediaan informasi bagipengguna yang berhak.c.

• Pencegahan akses system dari yang tidak berhak.d.

• Pencegahan akses informasi dariyang tidak berhak.

2.Perencanaan Kemanan Jaringan

Agar Keamanan jaringan Kita bisa maksimal, maka kita harus merencanakan keamanan tersebut.Beberapa keamanan yang direncanakan adalah:

• Menentukan data atau informa siapa saja yang harus dilindungi.b.

• Menentukan berapa besar biaya yang harus ditanamkan dalam melindunginya.c.

• Menentukan siapa yang bertanggung jawab untuk menjalankan langkah-langkah yangdiperlukan untuk melindungi bagian tersebut.

3.Metode Keamanan jaringan

Berikut ini adalah beberapa metode yang digunakan untuk sistem Keamanan jaringan

 Kita,diantaranya 

 

a.Pembatasan Akses Jaringan Komputer

• Internal Password AuthenticationPassword yang baik menjadi penting dan sederhana dalam keamanan suatu jaringan.Kebanyakan masalah dalam Keamanan jaringan  Disebabkan karena password yang buruk.

• Server-based password authenticationTermasuk dalam metoda ini misalnya sistem Kerberos server, TCP-wrapper, dimanasetiap service yang disediakan oleh server tertentu dibatasi dengan suatu daftar hostdan user yang boleh dan tidak boleh menggunakan service tersebut.

• Firewall dan Routing ControlFirewall melindungi host-host pada sebuah network dari berbagai serangan. Denganadanya firewall, semua paket ke sistem di belakang firewall dari jaringan luar tidakdapat dilakukan langsung. Semua hubungan harus dilakukan dengan mesin firewall.

• Server-based token authentication

 

Metoda ini menggunakan authentication system yang lebih ketat, yaitu denganpenggunaan token / smart card, sehingga untuk akses tertentu hanya bisa dilakukanb.

 

B. Menggunakan metode enkripsi tertentuDasar enkripsi cukup sederhana. Pengirim menjalankan fungsi enkripsi pada pesan plain text, ciphertext yang dihasilkan kemudian dikirimkan lewat jaringan, dan penerima menjalankan fungsi dekripsi(Decryption) untuk mendapatkan plain text semula.Proses enkripsi /dekripsi tergantung pada kunci (Key ) rahasia yang hanya diketahui oleh pengirimdan penerima. Ketika kunci dan enkripsi ini digunakan, sulit bagi penyadap untuk mematahkan ciphertext, sehingga komunikasi data antara pengirim dan penerima aman.Berikut adalah contoh untuk mengenkripsi suatu file atau folder Jika file hasil enkripsi tersebut disalin dan dibuka oleh user lain, maka akan muncul pesan error Seperti “username not have access privileges”Atau”Error copying file or folder“.

 c. Pemonitoran terjadwal terhadap jaringanDengan adanya pemantauan yang teratur, maka penggunaan sistem oleh yang tidakberhak dapatdihindari / cepat diketahui. Untuk mendeteksi aktifitas yang tidak normal,maka perlu diketahui aktifitasyang normal. Proses apa saja yang berjalan pada saataktifitas normal. Siapa saja yang biasanya loginpada saat tersebut. Siapa saja yangbiasanya login diluar jam kerja. Bila terjadi keganjilan, maka perlusegera diperiksa.Bila hal-hal yang mencurigakan terjadi, maka perlu dijaga kemungkinan adanyaintruder.

4.  Password

Akun administrator pada suatu server sebaiknya diubah namanya dan sebaiknya hanya satu akunsaja yang dapat mengakses. Untuk melakukan pengujian password yang dibuat. Ada utilitas yang dapat digunakan untukmengetes kehandalan password, yaitu dengan menggunakan software seperti avior yang bertujuanuntuk melakukan brute-force password.

5. Memonitor Jaringan

Untuk meminimalisir penyerangan terhadapKeamanan jaringan, hal yang dapat dilakukanadministrator dalam memonitoring jaringan sebaiknya adalah dengan membatasi user yang dapatmelakukan full-access kedalam suatu server. Cara paling sederhana adalah dengan memberlakukanwewenang read only untuk semua user. Cara lain adalah dengan melakukan pembatasan berdasarkanhal berikut ini:a.MAC Address . Contohnya, user yang dapat melakukan akses secara penuh adalah user yangmemiliki alamat abcd:1020:fa02:1:2:3b.

 IP Address. Contohnya, user yang dapat melakukan akses secara penuh adalah user yangmemiliki alamat 192.168.20.1Pemonitoran juga dapat dilakukan dengan melakukan pengauditan system Log pada servertertentu oleh administrator jaringan. Tujuannya adalah mengidentifikasi gangguan dan ancamankeamanan yang akan terjadi pada jaringan.Memonitor jaringan juga harus dilakuakan pada hardware jaringan itu sendiri, seperti melihatwaktu respon perangkat keras, kekompatibilitasan dengan perangkat lunak dan lain lainnya.

6. Intrusion Detection System

Intrusion Detection System (IDS) adalah sebuah system untuk mendeteksi penyalah gunaan jaringandan sumber daya komputer. IDS memiliki sejumlah sensor yang digunakan untuk mendeteksipenyusupan. Contohs ensor meliputi:.

 

• Sebuah sensor untuk memonitor TCP requestb.

• Log file monitorc.

• File integrity checker

IDS memiliki diagram blok yang terdiri dari 3 buah modul

• Modul sensor (sensor modul)b.

• Modul analisis (analyzer modul)c.

• Modul basis data (database modul)


Ada dua jenis IDS, yakni:

1. Network-based Intrusion Detection System

 (NIDS): Semua lalu lintas yang mengalir ke sebuah jaringan akan dianalisis untuk mencari apakah ada percobaan serangan atau penyusupan kedalam sistem jaringan. NIDS umumnya terletak di dalam segmen jaringan penting di manaserver berada atau terdapat pada “pintu masuk” jaringan. Kelemahan NIDS adalah bahwa NIDSagak rumit diimplementasikan dalam sebuah jaringan yang menggunakan Switch Ethernet, meskipun beberapa Vendor  Switch Ethernet sekarang telah menerapkan fungsi IDS di dalam Switch Buatannya untuk memonitor port atau kkoneks

2. Host-based Intrusion Detection System (HIDS): Aktivitas sebuah Host  Jaringan individual akandipantau apakah terjadi sebuah percobaan serangan atau penyusupan ke dalamnya atau tidak.HIDS seringnya diletakkan pada server-server kritis di jaringan, seperti halnya  Firewall ,Webserver , atau server yang terkoneksi ke Internet. Kebanyakan produk IDS merupakan sistem yang bersifat pasif, mengingat tugasnya hanyalahmendeteksi intrusi yang terjadi dan memberikan peringatan kepada administrator jaringan bahwamungkin ada serangan atau gangguan terhadap jaringan. Akhir-akhir ini, beberapa Vendor 

 Juga mengembangkan IDS yang bersifat aktif yang dapat melakukan beberapa tugas untuk melindungi hostatau jaringan dari serangan ketika terdeteksi, seperti halnya menutup beberapa port atau memblokirbeberapa alamat IP. Produk seperti ini umumnya disebut sebagai Intrusion Prevention System(IPS).Beberapa produk IDS juga menggabungkan kemampuan yang dimiliki oleh HIDS dan NIDS, yangkemudian disebut sebagai sistem hibrid (Hybrid intrusion detection system


Sabtu, 26 Februari 2022

Legal, Ethical, dan Professional Issues on Information Security

 

Legal, Ethical, dan Professional Issues on Information Security


A. Hukum dan Etik dalam Keamanan Informasi  
etika adalah suatu usaha terdiri dari berbagai aktivitas yang dirancang untuk memberikan arah bagi para karyawan bagaimana melaksanakan paham perusahaan.

aspek hukum yang istilahnya berasal dari Cyberspace Law, yang ruang lingkupnya meliputi setiap aspek yang berhubungan dengan orang perorangan atau subyek hukum yang menggunakan dan memanfaatkan teknologi internet/elektronik yang dimulai pada saat mulai “online” dan memasuki dunia cyber atau maya.

B Kebijakan dan Hukum
  Kebijakan aturan aturan yang telah di tentukan sebuah perusahaan atau setiap organisasi
Hukum aturan yang mengamanatkan atau melarang perilaku tertentu dan ditegakkan oleh negara


Kejahatan cyber
 Ada berbagai kejahatan cyber yang terjadi
1.Hacker: seseorang yg mengakses komputer/jaringan
secara ilegal
2.Cracker: seseorang yg mengakses komputer/jaringan
secara ilegal dan memiliki niat buruk
3.Script kiddie: serupa dengan cracker tapi tidak memiliki
keahlian teknis
4.Cyberterrorist: seseorang yang menggunakan Internet atau
jaringan untuk merusak dan menghancurkan
komputer/jaringan dengan alasan politis

Perbedaan Etik Antar Budaya

 etika diartikan sebagai nilai-nilai atau norma yang menjadi pegangan bagi seseorang atau kelompok orang dalm mengatur tingkah laku. Sedangkan Kebudyaan merupakan hasil cipta, rasa dan karsa manusia.


Etik dan Pedidikan

-Etika pendidikan merupakan sebuah proses pendidikan yang berlangsung secara etis dan terus-menerus dalam kehidupan seseorang melalui pengajaran dan penekanan terhadap etika itu sendiri.
   Tanpa adanya Pendidikan yang bagus etika seseorang akan buruk 








Sabtu, 19 Februari 2022

Keamanan informasi

PENGERTIAN KEAMANAN INFORMASI

Keamanan informasi merupakan suatu subsistem dalam suatu organisasi yang bertugas mengendalikan risiko terkait dengan sistem informasi berbasis komputer. Sistem keamanan informasi memiliki elemen utama sistem informasi, seperti perangkat keras, database prosedur, dan pelaporan. Sebuah contoh, data terkait dengan penggunaan sistem dan pelanggaran keamanan bias jadi dikumpulkan secara real time, disimpan dalam database, dan digunakan untuk menghasilkan laporan.

Perkembangan teknologi informasi telah memberikan kemudahan bagi masyarakat dalam berbagai bidang seperti perdagangan, pendidikan dan perbankan. Dengan adanya jaringan komputer , internet memudahkan semua transaksi akan tetapi dengan kemudahan yang ada memiliki dampak negative dalam hal keamanan. Praktek-praktek kejahatan dalam jaringan computer kerap terjadi dan meresahkan masyarakat, misalnya pencurian data akun dan nomor rahasia kartu kredit. Akibat dari hal seperti ini aspek keamanan dan penggunaan jaringan computer menjadi hal yang krusial.

ELEMEN KEAMANAN INFORMASI


CIA- triad
Informasi dapat dikatakan aman apabila memenuhi 5 aspek, diantaranya adalah sebagai berikut :

1.Confidentiality
Informasi dapat dikatakan aman apabila menjamin bahwa hanya mereka yang memiliki hak yang boleh mengakses informasi tertentu, yang biasa disebut dengan istilah confidentiality. Confidentiality merupakan tindakan pencegahan dari orang atau pihak yang tidak berhak untuk mengakses informasi.

2.Integrity
Informasi dapat dikatakan aman apabila menjamin kelengkapan informasi dan menjaga dari kerusakan atau ancaman lain yang mengakibatkan berubah informasi dari aslinya, yang biasa disebut dengan istilah integrity. integrity adalah memastikan bahwa informasi tersebut masih utuh, akurat, dan belum dimodifikasi oleh pihak yang tidak berhak

3.Availability
Informasi dapat dikatakan aman apabila menjamin pengguna dapat mengakses informasi kapanpun tanpa adanya gangguan dan tidak dalam format yang tidak bisa digunakan, yang biasa disebut dengan istilah Availability . Pengguna dalam hal ini bisa jadi manusia, atau komputer yang tentunya dalam hal ini memiliki otorisasi untuk mengakses informasi. Availability meyakinkan bahwa pengguna mempunyai kesempatan dan akses pada suatu informasi.

4.Authenticity
Informasi dapat dikatakan aman apabila menjamin data yang dikirim tetap utuh dan asli, yang biasa disebut dengan istilah Authenticity. Authenticity dipakai untuk membuktikan asli atau tidaknya sebuah dokumen atau pesan yang dipakai oleh user (orang yang berhak atas data tersebut). Pembuktian sebuah dokumen atau data ini asli atau tidak juga merupakan dasar untuk pelayanan keamanan pada kepentingan tertentu.

5.Non-repudiation
Informasi dapat dikatakan aman apabila menjamin seseorang tidak dapat menyangkal telah melakukan sebuah transaksi, , yang biasa disebut dengan istilah Non-repudiation . Sebagai contoh, A memberikan kuasa melalui email pada B untuk mengemail sebuah data di komputernya dan kemudian C selaku sekertaris A menyangkal dan tidak percaya bahwa pemilik komputer (A) tersebut telah memberikan kuasa kepada pihak B.

KLASIFIKASI KEAMANAN INFORMASI


1.Fisik (PHYSICAL SECURITY)

Memfokuskan untuk mengamankan individu atau tempat kerja dari berbagai ancaman.

Contoh: wifi café, data center (tempat penyimpanan server).

Bagaimana mendesain orang agar tidak masuk ke data center?
Maka
Dilakukan MONITORING masuk kedalam data center.Seperti adanya sidik jari, sensor muka, id card, dll.
2.MANUSIA (PEOPLE/PERSONAL SECURITY)

Aspek dimana keamanaan informasi berhubungan dengan personilnya.

Contoh :Password yang lemah
Sehingga personal security ini terkait dengan orangnya.

3.DATA,MEDIA TEKNIK KOMUNIKASI

Kelemahan dalam software yang digunakan untuk mengelola data.

Seorang kriminal dapat memasang virus / trojan horse sehingga dapat mengumpulkan

informasi (seperti password) yang semestinya tidak berhak diakses.



KEAMANAN INFORMASI

1.Network Security

     Fokus pada saluran (media) pembawa informasi

 2.Computer Security

    Fokus pada keamanan computer (end system,host) termasuk system operasi (operation system,OS

 3.Application Security

    Fokus pada aplikasi system database

Topologi



KLASIFIKASI KEAMANAN INFORMASI




POLICY :
 Akses ke semua sumber daya jaringan diberikan melalui user ID dan pass yang unik
 STANDARDS :
 Password panjangnya 8 karakter (minimal)

 GUIDELINES,PROSEDUR,PRACTICES :
 Password harus megandung keabsahan dan tidak ditemukan dalam kamus

Selasa, 25 Mei 2021

Pengertian dan Contoh Program Sorting pada C++ shell short

 

Pengertian Sorting pada C++

Salah satu bagian penting dari struktur data adalah proses pengurutan data. Data terkadang akan berada dalam bentuk yang tidak berpola ataupun dengan pola tertentu yang tidak kita inginkan. Namun dalam penggunaannya, kita akan selalu ingin menggunakan data tersebut dalam bentuk yang rapi atau berpola sesuai dengan yang kita inginkan. Maka dari itu proses sorting adalah proses yang sangat penting dalam struktur data. Proses pengurutan banyak ditemukan dalam pemrosesan komputer. Data yang sudah terurut memiliki beberapa keuntungan. Selain mempercepat pencarian, data yang sudah terurut juga dapat dengan mudah menentukan Nilai terbesar atau terkecil.

Pengurutan data memang sangat relevan dan merupakan aktivitas yang sangat penting berkaitan dengan pemrosesan data. Bahkan pengurutan data telah banyak dilakukan dengan bantuan alat. Adanya kebutuhan terhadap peroses pengurutan memunculkan bermacam-macam metode pengurutan yang bertujuan untuk memperoleh metode pengurutan yang optimal.

 

1. Definisi Sorting pada C++

Pengurutan (sorting) adalah proses mengatur sekumpulan objek menurut urutan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending), yaitu urutan objek yang disusun mulai dari Nilai terkecil hingga terbesar atau menurun (descending), yaitu urutan objek yang disusun mulai dari Nilai terbesar hingga terkecil. Jika N buah objek atau data disimpan di dalam array Nilai, maka pengurutan menaik berarti menyusun elemen array sedemikian sehingga:

NILAI[0] ≤ NILAI[1] ≤ NILAI[2] ≤ … ≤ NILAI[N-1]

Sedangkan pengurutan menurun  berarti menyusun elemen array sedemikian sehingga:

NILAI[0] ≥ NILAI[1] ≥ … ≥ NILAI[N-1]

Data yang diurut dapat berupa data bertipe data dasar atau tipe data bentukan. Jika data bertipe bentukan (structure), maka harus disebutkan berdasarkan field apa data tersebut akan diurutkan.

Sama halnya dengan pencarian, pengurutan juga dibedakan menjadi dua kelompok, yaitu:

  1. Pengurutan Internal, yaitu pengurutan terhadap sekumpulan data yang disimpan di dalam memori komputere. Umumnya struktur internal yang dipakai untuk pengurutan ini adalah array, sehingga pengurutan internal disebut dengan pengurutan array.
  2. Pengurutan Eksternal, yaitu pengurutan data yang disimpan di dalam memori sekunder. Biasanya data dengan berjumlah besar sehingga tidak mampu dimuat semuanya dalam memori komputer. Struktur eksternal yang dipakai adalah arsip (file), maka pengurutan ini juga sering disebut dengan pengurutan arsip.

Baca juga : Pengertian dan Contoh Program Array pada C++

Karena pengaksesan memori utama lebih cepat dari pada pengaksesan memori sekunder, maka pengurutan internal lebih cepat dibanding dengan pengurutan eksternal.

Beberapa metode yang dapat digunakan untuk pengurutan antara lain:
  1. Bubble Sort
  2. Selection Sort
  3. Quick Sort
  4. Merge Sort
  5. Heap Sort
  6. Shell Sort
  7. Radix Sort
  8. Tree Sort
  9. Maximum Sort
  10. Insertion Sort

Banyaknya metode pengurutan yang tersedia menimbulkan pertanyaan: algoritma manakah yang memiliki kinerja yang baik? Kinerja pengurutan data sangat menentukan kinerja sistem, karena itu pemilihan metode pengurutan yang cocok akan berperan dalam suatu aplikasi. Metode pengurutan yang akan dibahas adalah metode pengurutan Bubble Sort, Quick Sort, Maximum/Minimum Sort, Shell Sort, Merge Sort, dan Insertion.

2. Bubble Sort

Bubble Sort adalah metode yang membandingkan elemen yang sekarang dengan elemen-elemen berikutnya. Pembandingan elemen dapat dimulai dari awal atau mulai dari paling akhir. Apabila elemen yang sekarang lebih besar (untuk urut menaik) atau lebih kecil (untuk urut menaik) dari elemen berikutnya, maka posisinya ditukar, tetapi jika tidak maka posisinya tetap.

Contoh : Misalkan kita mempunyai array Nilai sebanyak 8 elemen akan diurutkan secara menaik dengan metode Bubble Sort: 25, 71, 30, 45, 20, 15, 6, 50. Urutan langkah pengurutannya yang dimulai dari belakang seperti berikut dan programnya dapat dilihat pada program Lat_Sorting_01a.

 

proses bubble sort menaik

 Perhatikan contoh pengurutan yang diperagakan di atas bahwa pada langkah 4 telah terurut, maka sebenarnya proses sudah dapat dihentikan. Untuk mengatasi hal itu dalam program Lat_Sorting_01b digunakan variabel bertipe Boolean. Demikian juga halnya pengurutan secara menaik di atas tetap menggunakan variabel bertipe Boolean untuk mengatasi hal yang sama.

/* Program Pengurutan Metode Bubble Sort
  Pengurutan Secara Menaik
  Nama File : Lat_Sorting_01a */

#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

void main()
{
  int Nilai[20];
  int i, j, k, N;
  int temp;
  bool tukar;
  cout<<"Masukkan Banyak Bilangan : ";
  cin>>N;
  for(i=0; i<N; i++)
  {
    cout<<"Elemen ke-"<<i<<" : ";
    cin>>Nilai[i];
  }
}

//Proses Cetak Sebelum diurutkan
cout<<"\nData sebelum diurut : ";
for(i=0; i<N; i++)
  cout<<setw(3)<<Nilai[i];
  
//Proses Pengurutan
i=0;
tukar = true;
while ((i<=N-2) && (tukar))
{
  tukar = false;
  for(j=N-1; j>=i+1; j--)
  {
    if(Nilai[j] < Nilai[j-1])
    {
      {
        temp = Nilai[j];
        Nilai[j] = Nilai[j-1];
        Nilai[j-1] = temp;
        tukar = true;
        cout<<"\nUntuk j = " <<j<<" : ";
        for(k=0; k<N; k++)
          cout<<set(3)<<Nilai[k];
      }
    }
    i++;
  }
  
  //Proses Cetak Setelah diurutkan
  cout<<"\nData Setelah di urut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
  getch();
}

3. Quick Sort

Quick Sort merupakan metode tercepat dalam proses pengurutan data dengan menggunakan prinsip rekursif. Metode ini menggunakan strategi “pecah-belah” dengan mekanisme berikut ini.

Misalkan kita mempunyai array Nilai[k..l]. Array dipartisi menjadi dua bagian array kiri Nilai[k..m] dan array kanan Nilai[m+1..l]. Dasar mempartisi array menjadi dua adalah dengan mengambil elemen pertama sebagai elemen pivot. Letakkan semua elemen array yang lebih kecil dari pivot ke sebelah pivot dan semua elemen array yang lebih besar dari pivot ke sebelah kanan pivot. Elemen-elemen yang di sebelah kiri elemen pivot merupakan elemen-elemen array Nilai[k..m] sedangkan elemen-elemen array Nilai[m+2..l] adalah semua elemen yang lebih besar dari pivot. Lakukan hal yang sama seperti di atas terhadap array Nilai[k..m] dan Nilai[m+1..l] hingga tidak dapat dipartisi lagi.

  Contoh: Misalkan kita mempunyai array Nilai sebanyak 8 elemen akan diurutkan secara menaik dengan metode Maximum Sort: 25, 72, 30, 45, 20, 15, 6, 50. Urutan langkah pengurutannya seperti berikut dan programnya dapat dilihat pada program Lat_Sorting_02a.

  1. Ambil elemen pertama sebagai elemen pivot, letakkan semua elemen array yang lebih kecil dari pivot ke sebelah kiri elemen pivot dan letakkan semua elemen array yang lebih besar dari pivot ke sebelah kanan elemen pivot.

proses quick sort ke-1

  1. Gunakan array Nilai[0..2]. Ambil elemen pertama sebagai elemen pivot, letakkan semua elemen array yang lebih kecil dari pivot ke sebelah kiri elemen pivot dan letakkan semua elemen array yang lebih besar dari pivot ke sebelah kanan elemen pivot.

proses quick sort ke-2

Perhatikan array Nilai[2] tidak dapat lagi dipartisi maka berhenti sampai disana.

  1. Gunakan array Nilai[0..1]. Ambil elemen pertama sebagai elemen pivot, letakkan semua elemen array yang lebih kecil dari pivot ke sebelah kiri elemen pivot dan letakkan semua elemen array yang lebih besar dari pivot ke sebelah kanan elemen pivot.

proses quick sort ke-3

Perhatikan array Nilai[0] dan Nilai[1] tidak dapat lagi dipartisi maka berhenti sampai di sana.

  1. Gunakan array Nilai[4..7]. Ambil elemen pertama sebagai elemen pivot, letakkan semua elemen array yang lebih kecil dari pivot ke sebelah kiri elemen pivot dan letakkan semua elemen array yang lebih besar dari pivot ke sebelah kanan elemen pivot.

proses quick sort ke-4

  1. Gunakan array Nilai[4..6]. Ambil elemen pertama sebagai elemen pivot, letakkan semua elemen array yang lebih kecil dari pivot ke sebelah kiri elemen pivot dan letakkan semua elemen array yang lebih besar dari pivot ke sebelah kanan elemen pivot.

proses quick sort ke-5

  1. Gunakan array Nilai[5..6]. Ambil elemen pertama sebagai elemen pivot, letakkan semua elemen array yang lebih kecil dari pivot ke sebelah kiri elemen pivot dan letakkan semua elemen array yang lebih besar dari pivot ke sebelah kanan elemen pivot.

proses quick sort ke-6

Karena semua elemen array sudah tidak dapat dipartisi maka proses pengurutan berakhir dan hasilnya diperoleh seperti berikut (gabungkan mulai Nilai[0] hingga Nilai[7]):

proses quick sort selesai

Untuk melakukan proses pengurutan data secara menurun dengan metode Quick Sort dilakukan dengan meletakkan semua elemen array yang lebih kecil dari pivot ke sebelah kanan pivot dan semua elemen array yang lebih besar dari pivot ke sebelah kiri pivot.

/* Program Pengurutan Metode Quick Sort
  Pengurutan Secara Menaik
  Nama File : Lat_Sorting_02a */
  
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

void Cetak(int data[], int n)
{
  int i;
  for(i=0; i<n; i++)
    cout<<setw(3)<<data[i];
  cout<<"\n";
}

int Partisi(int data[], int p, int r)
{
  int x, i, j, temp;
  x = data[p];
  i=p;
  j=r;
  while(l)
  {
    while(data[j]>x)
      j--;
    while(data[i]<x)
      i++;
    if(i<j)
    {
      temp = data[i];
      data[i] = data[j];
      data[j] = temp;
    }
    else
      return j;
  }
}

void Quick_Sort(int data[], int p, int r)
{
  int q;
  if(p<r)
  {
    q=Partisi(data, p, r+1);
    Quick_Sort(data, p, 1);
    Quick_Sort(data, q+1, r);
  }
}

void main()
{
  int Nilai[20];
  int i, N;
  cout<<"Masukkan Banyak Bilangan : ";
  cin>>N;
  for(i=0; i<N; i++)
  {
    cout<<"Elemen ke-"<<i<<" : ";
    cin>>Nilai[i];
  }
  cout<<"\nData Sebelum di urut : ";
  Cetak(Nilai, N);
  cout<<endl;
  Quick_Sort(Nilai, 0, N-1);
  cout<<"\nData Setelah di urut : ";
  Cetak(Nilai,N);
  getch();
}

4. Metode Maximum/Minimum Sort

Metode Maximum/Minimum Sort dilakukan berdasarkan pemilihan elemen maksimum/minimum, maka metode ini disebut juga dengan metode pemilihan/seleksi (Selection Sort).

4.1 Metode Maximum Sort

Metode ini disebut dengan metode Maximum karena didasarkan pada pemilihan elemen maksimum sebagai dasar pengurutan. Konsepnya adalah memilih elemen maksimum kemudian mempertukarkan elemen maksimum tersebut dengan elemen paling akhir untuk urut menaik dan elemen pertama untuk urut menurun. Selanjutnya elemen paling akhir/awal tersebut di-“isolasi”, artinya elemen tersebut tidak disertakan lagi untuk tahapan berikutnya. Proses yang sama dilakukan kembali terhadap elemen array yang tersisa, yaitu memilih elemen maksimum kemudian mempertukarkan elemen maksimum tersebut dengan elemen paling akhir/awal dari array yang tersisa tadi. Kemudian diisolasi kembali. Demikian seterusnya hingga semua elemen terurut.

Contoh: Misalkan kita mempunyai array Nilai sebanyak 8 elemen akan diurutkan secara menaik dengan metode Maximum Sort: 25, 72, 30, 45, 20, 15, 6, 50. Urutan langkah pengurutannya seperti berikut dan programnya dapat dilihat pada program Lat_Sorting_04a.

Langkah -1: Cari elemen maksimum di dalam array Nilai[0..7] → Nilai[1]=72 kemudian tukarkan dengan elemen array paling akhir Nilai[7] sehingga diperoleh array:

proses maximum sort menaik ke-1

Langkah -2: Cari elemen maksimum di dalam array yang tersisa Nilai[1..7] → Nilai[1]=50 kemudian tukarkan dengan elemen paling akhir array yang tersisa Nilai[6] sehingga diperoleh array:

proses maximum sort menaik ke-2

Langkah -3: Cari elemen maksimum di dalam array yang tersisa Nilai[2..7] → Nilai[3]=45 kemudian tukarkan dengan elemen paling akhir array yang tersisa Nilai[5] sehingga diperoleh array:

proses maximum sort menaik ke-3

Langkah -4: Cari elemen maksimum di dalam array yang tersisa Nilai[3..7] → Nilai[2]=30 kemudian tukarkan dengan elemen paling akhir array yang tersisa Nilai[4] sehingga diperoleh array:

proses maximum sort menaik ke-4

Langkah -5: Cari elemen maksimum di dalam array yang tersisa Nilai[4..7] → Nilai[0]=25 kemudian tukarkan dengan elemen paling akhir array yang tersisa Nilai[3] sehingga diperoleh array:

proses maximum sort menaik ke-5

Langkah -6: Cari elemen maksimum di dalam array yang tersisa Nilai[5..7] → Nilai[2]=20 kemudian tukarkan dengan elemen paling akhir array yang tersisa Nilai[2], sehingga diperoleh array:

proses maximum sort menaik ke-6

Langkah -7: Cari elemen maksimum di dalam array yang tersisa Nilai[6..7] → Nilai[0]=15 kemudian tukarkan dengan elemen paling akhir array yang tersisa Nilai[1], sehingga diperoleh array:

proses maximum sort menaik selesai

Selesai. Dan array telah terurut secara menarik. Program mengurutkan secara menaik dengan metode Maximum Sort dapat dilihat pada program Lat_Sorting_04a.

/* Program Pengurutan Metode Maximum Sort
  Pengurutan Secara Menaik
  Nama File : Lat_Sorting_04a */
  
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

void main()
{
  int Nilai[20];
  int i, j, N, l;
  int temp, U, Imaks;
  cout<<"Masukkan Banyak Bilangan : ";
  cin>>N;
  for(i=0; i<N; i++)
  {
    cout<<"Elemen ke-"<<i<<" : ";
    cin>>Nilai[i];
  }
  
  //Proses Cetak Sebelum diurutkan
  cout<<"\nData sebelum diurut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
    
  //Proses Pengurutan
  U=N-1;
  for(i=0; i<=N-2; i++)
  {
    Imaks = 0;
    for(j=1; j<=U; j++)
    {
      if(Nilai[j] > Nilai[Imaks])
      Imaks = j;
    }
    temp = Nilai[U];
    Nilai[U] = Nilai[Imaks];
    Nilai[Imaks] = temp;
    U--;
    cout<<endl;
    for(l=0; l<N; l++)
      cout<<setw(3)<<Nilai[l];
  }
  cout<<"\nData Setelah di urut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
  getch();
}
   Contoh: Misalkan kita mempunyai array Nilai sebanyak 8 elemen akan diurutkan secara menurun dengan metode Maximum Sort 25, 72, 30, 45, 20, 15, 6, 50. Urutan langkah pengurutannya seperti berikut dan programnya dapat dilihat pada program Lat_Sorting_04b.

Langkah -1: Cari elemen maksimum di dalam array Nilai[0..7] → Nilai[1]=72 kemudian tukarkan dengan elemen pertama array Nilai[0]=25 sehingga diperoleh array:

proses meximum sort menurun ke-1

Langkah -2: Cari elemen maksimum di dalam array yang tersisa Nilai[1..7] → Nilai[7]=50 kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[1]=25 sehingga diperoleh array:

proses meximum sort menurun ke-2

Langkah -3: Cari elemen maksimum di dalam array yang tersisa Nilai[2..7] → Nilai[3]=45 kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[2]=30 sehingga diperoleh array:

proses meximum sort menurun ke-3

Langkah -4: Cari elemen maksimum di dalam array yang tersisa Nilai[3..7] →Nilai[3]=3- kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[3]=30 sehingga diperoleh array:

proses meximum sort menurun ke-4

Langkah -5: Cari elemen maksimum di dalam array yang tersisa Nilai[4..7] → Nilai[7]=35 kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[4]=30 sehingga diperoleh array:

proses meximum sort menurun ke-5

Langkah -6: Cari elemen maksimum di dalam array yang tersisa Nilai[5..7] → Nilai[7]=20 kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[5]=15 sehingga diperoleh array:

proses meximum sort menurun ke-6

Langkah -7: Cari elemen maksimum di dalam array yang tersisa Nilai[6..7] → Nilai[7]=15 kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[6]=6 sehingga diperoleh array:

proses meximum sort menurun selesai

Selesai. Dan array telah terurut secara menurun. Program mengurutkan secara menurun dengan metode Maximum Sort dapat dilihat pada program Lat_Sorting_04b.

/* Program Pengurutan Metode Maximum Sort
  Pengurutan Secara Menurun
  Nama File : Lat_Sorting_04b */
  
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

void main()

{
  int Nilai[20];
  int i, j, N, l;
  int temp, U, Imaks;
  cout<<"Masukkan Banyak Bilangan : ";
  cin>>N;
  for(i=0; i<N; i++)
  {
    cout<<"Elemen ke-"<<i<<" : ";
    cin>>Nilai[i];
  }
  
  //Proses Cetak Sebelum diurutkan
  cout<<"\nData sebelum diurut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
  
  //Proses Pengurutan
  U=N-1;
  for(i=0; i<=N-2; i++)
  {
    Imaks = i;
    for(j=i+1; j<=U; j++)
    {
      if(Nilai[j] > Nilai[Imaks])
        Imaks = j;
    }
    temp = Nilai[i];
    Nilai[i] = Nilai[Imaks];
    Nilai[Imaks] = temp;
    cout<<endl;
    for(l=0; l<N; l++)
      cout<<setw(3)<<Nilai[l];
  }
  cout<<"\nData Setelah di urut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
  getch();
}

 

4.2. Metode Minimum Sort

Metode ini disebut dengan metode minimum karena didasarkan pada pemilihan elemen minimum sebagai dasar pengurutan. Konsepnya adalah memilih elemen minimum kemudian mempertukarkan elemen minimum tersebut dengan elemen paling akhir untuk urut menaik dan elemen pertama untuk urut menurun. Selanjutnya elemen paling akhir/pertama tersebut di “isolasi” artinya elemen tersebut tidak disertakan lagi untuk tahapan berikutnya. Proses yang sama dilakukan kembali terhadap elemen array yang tersisa, yaitu memilih elemen minimum kemudian mempertukarkan elemen minimum tersebut dengan elemen paling akhir/pertama dari array yang tersisa tadi. Kemudian diisolasi kembali. Demikian seterusnya hingga semua elemen terurut.

Contoh: Misalkan kita mempunyai array Nilai sebanyak 8 elemen akan diurutkan secara menaik dengan metode Minimum Sort: 25, 72, 30, 45, 20, 15, 6, 50. Urutan langkah pengurutannya seperti berikut dan programnya dapat dilihat pada program Lat_Sorting_05a.

Langkah -1: Cari elemen minimum di dalam array Nilai[0..7] → Nilai[6]=6 kemudian tukarkan dengan elemen pertama array Nilai[0]=25 sehingga diperoleh array:

proses minimum sort menaik ke-1

Langkah -2: Cari elemen minimum di dalam array Nilai[1..7] → Nilai[5]=15 kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[1]=72 sehingga diperoleh array:

proses minimum sort menaik ke-2

Langkah -3: Cari elemen minimum di dalam array Nilai[2..7] → Nilai[4]=2- kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[2]=30 sehingga diperoleh array:

proses minimum sort menaik ke-3

Langkah -4: Cari elemen minimum di dalam array Nilai[3..7] → Nilai[6]=25 kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[3]=45 sehingga diperoleh array:

proses minimum sort menaik ke-4

Langkah -5: Cari elemen minimum di dalam array Nilai[4..7] → Nilai[4]=30 kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[4]=30 sehingga diperoleh array:

proses minimum sort menaik ke-5

Langkah -6: Cari elemen minimum di dalam array Nilai[5..7] → Nilai[6]=45 kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[5]=72 sehingga diperoleh array:

proses minimum sort menaik ke-6

Langkah -7: Cari elemen minimum di dalam array Nilai[6..7] → Nilai[7]=50 kemudian tukarkan dengan elemen pertama array yang tersisa Nilai[6]=72 sehingga diperoleh array:

proses minimum sort menaik ke-7

/* Program Pengurutan Metode Minimum Sort
  Pengurutan Secara Menaik
  Nama File : Lat_Sorting_05a */
  
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

void main()
{
  int Nilai[20];
  int i, j, N, l;
  int temp, Imin;
  cout<<"Masukkan Banyak Bilangan : ";
  cin>>N;
  for(i=0; i<N; i++)
  {
    cout<<"Elemen ke-"<<i<<" : ";
    cin>>Nilai[i];
  }
  
  //Proses Cetak Sebelum diurutkan
  cout<<"\nData sebelum diurut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
    
  //Proses Pengurutan
  for(i=0; i<=N-2; i++)
  {
    Imin = i;
    for(j=i+1; j<N; j++)
    {
      if(Nilai[j] < Nilai[Imin]);
      Imin = j;
    }
  temp = Nilai[i];
  Nilai[i] = Nilai[Imin];
  Nilai[Imin] = temp;
  cout<<endl;
  for(l=0; l<N; l++)
    cout<<setw(3)<<Nilai(l);	
  }
  cout<<"\nData Setelah di urut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
  getch();
}

 

Contoh: Misalkan kita mempunyai array Nilai sebanyak 8 elemen akan diurutkan secara menurun dengan metode Minimum Sort: 25, 72, 30, 45, 20, 15, 6, 50. Urutan langkah pengurutannya seperti berikut dan programnya dapat dilihat pada program Lat_Sorting_05b.

Langkah -1: Cari elemen minimum di dalam array Nilai[0..7] → Nilai[6]=6 kemudian tukarkan dengan elemen terakhir array Nilai[7]=50 sehingga diperoleh array:

proses minimum sort menurun ke-1

Langkah -2: Cari elemen minimum di dalam array yang tersisa Nilai[0..6] → Nilai[5]=15 kemudian tukarkan dengan elemen terakhir array yang tersisa Nilai[6]=50 sehingga diperoleh array:

proses minimum sort menurun ke-2

Langkah -3: Cari elemen minimum di dalam array yang tersisa Nilai[0..5] → Nilai[4]=20 kemudian tukarkan dengan elemen terakhir array yang tersisa Nilai[5]=50 sehingga diperoleh array:

proses minimum sort menurun ke-3

Langkah -4: Cari elemen minimum di dalam array yang tersisa Nilai[0..4] → Nilai[0]=25 kemudian tukarkan dengan elemen terakhir array yang tersisa Nilai[4]=50 sehingga diperoleh array:

proses minimum sort menurun ke-4

Langkah -5: Cari elemen minimum di dalam array yang tersisa Nilai[0..3] → Nilai[2]=30 kemudian tukarkan dengan elemen terakhir array yang tersisa Nilai[3]=45 sehingga diperoleh array:

proses minimum sort menurun ke-5

Langkah -6: Cari elemen minimum di dalam array yang tersisa Nilai[0..2] → Nilai[2]=45 kemudian tukarkan dengan elemen terakhir array yang tersisa Nilai[2]=45 sehingga diperoleh array:

proses minimum sort menurun ke-6

Langkah -7: Cari elemen minimum di dalam array yang tersisa Nilai[0..1] → Nilai[0]=50 kemudian tukarkan dengan elemen terakhir array yang tersisa Nilai[1]=72 sehingga diperoleh array:

proses minimum sort menurun ke-7

Selesai. Dan array terurut secara menurun. Program mengurutakan secara menurun dengan metode Minimum Sort dapat dilihat pada program Lat_Sorting_05b.

/* Program Pengurutan Metode Minimum Sort
  Pengurutan Secara Menurun
  Nama File : Lat_Sorting_05b */
  
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

void main()
{
  int Nilai[20];
  int i, j, N, l;
  int temp, U, Imin;
  cout<<"Masukkan Banyak Bilangan : ";
  cin>>N;
  for(i=0; i<N; i++)
  {
    cout<<"Elemen ke-"<<i<<" : ";
    cin>>Nilai[i];
  }
  
  //Proses Cetak Sebelum diurutkan
  cout<<"\nData sebelum diurut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
    
  //Proses Pengurutan
  U=N-1;
  for(i=0; i<=N-2; i++)
  {
    Imin = 0;
    for(j=1; j<=U; j++)
    {
      if(Nilai[j] < Nilai[Imin])
        Imin = j;
    }
    temp = Nilai[U];
    Nilai[U] = Nilai[Imin];
    Nilai[Imin] = temp;
    cout<<endl;
    U--;
    for(l=0; l<N; l++)
      cout<<setw(3)<<Nilai[l];
  }
  cout<<"\nData Setelah di urut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i]
  getch();
}

 

5. Metode Shell Sort

Metode ini dinamakan sesuai dengan penciptanya, yaitu D.L. Shell. Metode ini mirip dengan metode Bubble Sort, hanya saja perbandingan dilakukan bukan antara dua bilangan yang berurutan, akan tetapi antara dua bilangan dengan jarak tertentu. Jarak ditentukan dengan N Div 2, dimana N adalah banyaknya elemen array. Lakukan pertukaran tempat jika setiap kali perbandingan dipenuhi (lebih besar untuk urut menaik dan lebih kecil untuk urut menurun). Setiap kali perbandingan terhadap keseluruhan elemen selesai dilakukan, maka perbandingan yang baru dilakukan kembali dimana jarak diperoleh dengan Jarak Div 2 (jarak diperoleh dari Nilai jarak sebelumnya). Perbandingan keseluruhan dilakukan sampai Nilai jarak sama dengan 1 (satu). Pada saat jarak berNilai 1, maka metode Shell Sort sama dengan metode Bubble Sort.

Contoh: Misalkan kita mempunyai array Nilai sebanyak 8 elemen akan diurutkan secara menaik dengan metode Shell Sort: 25, 72, 30, 45, 20, 15, 6, 59. Urutan langkah pengurutannya seperti berikut.

Untuk pertama kalinya Nilai jarak (K) = 8 div 2 = 4 dan kita buat suatu counter C=0. Kemudian proses perbandingan dilakukan berturut-turut antara Nilai[0] dengan Nilai[4], jika Nilai[0]>Nilai[4] maka lakukan pertukaran tempat dan jika tidak lanjutkan terhadap Nilai[1] dengan Nilai[5], jika Nilai[1]>Nilai[5] maka lakukan pertukaran tempat dan jika tidak lanjutkan terhadap Nilai[2] dengan Nilai[6], jika Nilai[2]>Nilai[6] maka lakukan pertukaran tempat dan jika tidak lanjutkan terhadap Nilai[3] dengan Nilai[7], jika Nilai[3]>Nilai[7] maka lakukan pertukaran tempat kemudian Nilai C=1.

metode shell sort

Karena Nilai K masih sama dengan 4 dan Nilai C=1, maka lakukan kembali proses perbandingan dengan menghitung Nilai jarak (K) sama dengan 4 div 2 =2 dan membuat Nilai C=0, sekarang proses perbandingan dilakukan berturut-turut antara Nilai[0] dengan Nilai[2], jika Nilai[0]>Nilai[2] maka lakukan pertukaran tempat dan jika tidak lanjutkan terhadap Nilai[1] dengan Nilai[3], jika Nilai[1]>Nilai[3] maka lakukan pertukaran tempat dan jika tidak lanjutkan terhadap Nilai[2] dengan Nilai[4], jika Nilai[2]>Nilai[4] maka lakukan pertukaran tempat dan jika tidak lanjutkan terhadap Nilai[3] dengan Nilai[5], jika Nilai[3]>Nilai[5] maka lakukan pertukaran dan jika tidak lanjutkan terhadap Nilai[4] dengan Nilai[6], jika Nilai[4]>Nilai[6] maka lakukan pertukaran dan jika tidak lanjutkan terhadap Nilai[5] dengan Nilai[7], jika Nilai[5]>Nilai[7] maka lakukan pertukaran tempat kemudian Nilai C=1.

metode shell sort

Karena Nilai K masih sama dengan 2 dan Nilai C=1, maka lakukan kembali proses perbandingan dengan menghitung Nilai jarak(K) sama dengan 2 div 2 = 1 dan membuat Nilai C=0, sekarang proses perbandingan dilakukan berturut-turut antara Nilai[0] dengan Nilai[1], Nilai[1] dengan Nilai[2], Nilai[2] dengan Nilai[3], Nilai[3] dengan Nilai[4], Nilai[4] dengan Nilai[5], Nilai[5] dengan Nilai[6], dan Nilai[6]>Nilai[7], kemudian Nilai C=1 akan diperoleh hasil pertukaran setelah perbandingan seperti berikut.

6         15       20       25       45       30       50       72

Walaupun K telah berNilai sama dengan satu, tetapi Nilai C masih berNilai sama dengan 1 maka perbandingan harus diulang kembali dengan memberi Nilai C=0 dan Nilai K sama seperti sebelumnya yaitu sama dengan 1. Setelah dilakukan perbandingan maka hasilnya dapat diperoleh seperti berikut:

6         15       20       25       30       45       50       72

Karena Nilai C tidak lagi berubah menjadi 1 maka perbandingan telah berakhir dan hasil terakhir merupakan hasil pengurutan yang diharapkan.

/* Program Pengurutan Metode Shell Sort
  Pengurutan Secara Menaik
  Nama File : Lat_Sorting_06a */
  
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

void main()
{
  int Nilai[20];
  int i, N, l, k;
  int temp, jarak, s;
  cout<<"Masukkan Banyak Bilangan : ";
  cin>>N;
  for(i=0; i<N; i++)
  {
    cout<<"Elemen ke-"<<i<<" : ";
    cin>>Nilai[i];
  }
  
  //Proses Cetak Sebelum diurutkan
  cout<<"\nData sebelum diurut : ";
  for(i=0; i<N; i++)
    cout<<setw(4)<<Nilai[i];
    
  //Proses Pengurutan
  jarak = N / 2;
  cout<<"\nJarak = "<<jarak;
  while(jarak >=1)
  {
    do
    {
      s=0;
      for(i=0; i<=(N-jarak)-1; i++)
      {
        k=i+jarak;
        if(Nilai[i] > Nilai[k])
        {
          temp = Nilai[i];
          Nilai[i] = Nilai[k];
          Nilai[k] = temp;
          s=1;
          for(l=0; l<N; l++)
            cout<<setw(4)<<Nilai[i];
          cout<<"\n\t";
          getch();
        }
      }
    }
    while(s!=0);
    jarak /= 2;
    cout<<"\nJarak= "<<jarak;
  }
  cout<<"\nData Setelah di urut : ";
  for(i=0; i<N; i++)
    cout<<setw(4)<<Nilai[i];
  getch();
}

Contoh: Misalkan kita mempunyai array Nilai sebanyak 8 elemen akan diurutkan secara menurun dengan metode Shell Sort: 25, 72, 30, 45, 20, 15, 6, 50. Urutan langkah pengurutannya seperti berikut.

Dengan cara yang sama untuk pengurutan secara menaik, dengan mengganti tanda > menjadi < maka akan diperoleh elemen array yang terurut secara menurun. Gunakan program Lat_Sorting_06b.

/* Program Pengurutan Metode Shell Sort
  Pengurutan Secara Menaik
  Nama File : Lat_Sorting_06a */
  
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

void main()
{
  int Nilai[20];
  int i, N, l, k;
  int temp, jarak, s;
  cout<<"Masukkan Banyak Bilangan : ";
  cin>>N;
  for(i=0; i<N; i++)
  {
    cout<<"Elemen ke-"<<i<<" : ";
    cin>>Nilai[i];
  }
  
  //Proses Cetak Sebelum diurutkan
  cout<<"\nData sebelum diurut : ";
  for(i=0; i<N; i++)
    cout<<setw(4)<<Nilai[i];
    
  //Proses Pengurutan
  jarak = N / 2;
  cout<<"\nJarak = "<<jarak;
  while(jarak >=1)
  {
    do
    {
      s=0;
      for(i=0; i<=(N-jarak)-1; i++)
      {
        k=i+jarak;
        if(Nilai[i] > Nilai[k])
        {
          temp = Nilai[i];
          Nilai[i] = Nilai[k];
          Nilai[k] = temp;
          s=1;
          for(l=0; l<N; l++)
            cout<<setw(4)<<Nilai[i];
          cout<<"\n\t";
          getch();
        }
      }
    }
    while(s!=0);
    jarak /= 2;
    cout<<"\nJarak= "<<jarak;
  }
  cout<<"\nData Setelah di urut : ";
  for(i=0; i<N; i++)
    cout<<setw(4)<<Nilai[i];
  getch();
}

6. Metode Merge Sort

Metode ini memanfaatkan keteraturan yang diperoleh dari hasil merging dua buah array. Suatu array Nilai yang mempunyai N elemen (Nilai[0..N-1]) dianggap terdiri dari N array yang masing-masing terdiri dari satu elemen. Untuk pasangan array yang berdekatan kita lakukan merging sehingga diperoleh N/2 buah array yang masing-masing array memiliki 2 elemen (jika N ganjil, akan terdapat sebuah array dengan 1 elemen). Pada saat melakukan proses merging dilakukan pengaturan posisi dengan cara elemen yang lebih kecil diletakkan di posisi awal (untuk pengurutan secara menaik) dan elemen yang lebih besar diletakkan di posisi awal(untuk pengurutan secara menurun). Kemudian dilakukan merging kembali untuk setiap pasanga array seperti cara di atas sehingga kita peroleh N/2 buah array yang masing-masing array memiliki 4 elemen. Langkah ini kita teruskan hingga kita memperoleh sebuah array yang sudah dalam keadaan terurut.

Misalkan kita memiliki array Nilai[0..13] = {45, 12, 4, 78, 90, 74, 40, 20, 10, 15, 25, 22, 95, 81} maka dengan menggunakan metode Merge Sort secara menaik dapat dilakukan seperti pada gambar.

metode merge sort

 

7. Metode Insertion Sort

Metode Insertion Sort merupakan metode pengurutan dengan cara menyisipkan elemen array pada posisi yang tepat. Pencarian yang tepat dilakukan dengan melakukan pencarian beruntun di dalam array. Selama pencarian posisi yang tepat dilakukan pergeseran elemen array. Algoritma pengurutan ini tepat untuk persoalan menyisipkan elemen baru ke dalam array yang sudah terurut. Misalnya dalam permainan kartu, kartu yang dicabut biasanya disisipkan oleh pemain pada posisi yang tepat sehingga penambahan kartu tersebut membuat semua kartu tetap terurut.

Misalkan kita memiliki suatu array dengan N maka pengurutan secara menaik dengan metode Insertion Sort sebagai berikut:

Langkah -1: elemen pertama Nilai[0] diasumsikan telah sesuai tempatnya.

Langkah -2: ambil elemen ke dua (Nilai[1]), cari lokasi yang tepat pada Nilai[0..0] untuk Nilai Nilai[1]. Lakukan pergeseran ke kanan jika Nilai[0..1] lebih besar (untuk urut menaik) atau lebih kecil (untuk urut menurun) dari Nilai[1]. Misalnya posisi yang tepat adalah j, maka sisipkanlah Nilai[1] pada Nilai[j].

Langkah -3: ambil elemen ke tiga (Nilai[2]), cari lokasi yang tepat pada Nilai[0..1] untuk Nilai[2]. Lakukan pergeseran ke kanan jika Nilai[0..2] lebih besar (untuk urut menaik) atau lebih kecil (untuk urut menurun) dari Nilai[2]. Misalnya posisi yang tepat adalah j, maka sisipkanlah Nilai[2] pada Nilai[j].

Langkah -4: ambil elemen ke empat (Nilai[3]), cari lokasi yang tepat pada Nilai[0..3] untuk Nilai Nilai[3]. Lakukan pergeseran ke kanan jika Nilai[0..2] lebih besar (untuk urut menaik) atau lebih kecil (untuk urut menurun) dari Nilai[3]. Misalnya posisi yang tepat adalah j, maka sisipkanlah Nilai[3] pada Nilai[j].

…

Langkah –N: ambil elemen ke N (Nilai[N]), cari lokasi yang tepat pada Nilai[0..N-1] untuk Nilai Nilai[N]. Lakukan pergeseran ke kanan jika Nilai[0..N-1] lebih besar (untuk urut menaik) atau lebih kecil (untuk urut menurun) dari Nilai[N]. Misalnya posisi yang tepat adalah j, maka sisipkanlah Nilai[N] pada Nilai[j].

Contoh: Misalkan kita mempunyai array Nilai sebanyak 8 elemen akan diurutkan secara menaik dengan metode Insertion Sort: 25, 72, 30, 45, 20, 15, 6, 50. Urutan langkah pengurutannya seperti berikut:

Langkah -1: Nilai[0] diasumsikan telah terurut.

proses insertion sort menaik ke-1

Langkah -2: cari lokasi yang tepat untuk Nilai[1] pada Nilai[0..0]. Dalam hal ini, ternyata 72 tidak lebih besasr dari 25 maka tidak terjadi pergeseran, sehingga diperoleh array seperti berikut:

proses insertion sort menaik ke-2

Langkah -3: cari lokasi yang tepat untuk Nilai[2] pada Nilai[0..1]. Dalam hal ini, ternyata lokasi yang tepat adalah 1, maka Nilai[1] digeser ke kanan sehingga Nilai[2] di posisi ke 1, sehingga diperoleh array sebagai berikut:

proses insertion sort menaik ke-3

Langkah -4: cari lokasi yang tepat untuk Nilai[3] pada Nilai[0..2]. Dalam hal ini, ternyata lokasi yang tepat adalah 2, maka Nilai[2] digeser ke kanan sehingga Nilai[3] di posisi ke 3, sehingga diperoleh array seperti berikut:

proses insertion sort menaik ke-4

Langkah -5: cari lokasi yang tepat untuk Nilai[4] pada Nilai[0..3]. Dalam hal ini, ternyata lokasi yang tepat adalah 0, maka Nilai[0], Nilai[1], Nilai[2], Nilai[3] digeser masing-masing satu posisi ke kanan sehingga Nilai[4] di posisi ke 0, sehingga array seperti berikut:

proses insertion sort menaik ke-5

Langkah -6: cari lokasi yang tepat untuk Nilai[5] pada Nilai[0..4]. Dalam hal ini, ternyata lokasi yang tepat adalah 0, maka Nilai[0], Nilai[1], Nilai[2], Nilai[3] dan Nilai[4] digeser masing-masing satu posisi ke kanan sehingga Nilai[6] di posisi ke 0, diperoleh array seperti berikut:

proses insertion sort menaik ke-6

Langkah -7: cari lokasi yang tepat untuk Nilai[6] pada Nilai[0..5]. Dalam hal ini, ternyata lokasi yang tepat adalah 0, maka Nilai[0], Nilai[1], Nilai[2], Nilai[3], Nilai[4] dan Nilai[5] digeser masing-masing satu posisi ke kanan sehingga Nilai[6] di posisi ke 0, diperoleh array seperti berikut:

proses insertion sort menaik ke-7

Langkah -8: cari lokasi yang tepat untuk Nilai[7] pada Nilai[0..6]. Dalam hal ini, ternyata lokasi yang tepat adalah 6, maka Nilai[6] digeser satu posisi ke kanan sehingga Nilai[7] di posisi ke 6, diperoleh array seperti berikut:

proses insertion sort menaik selesai

Selesai. Dan array telah terurut secara menaik. Program untuk mengurutkan elemen array secara menaik dengan metode Insertion Sort dapat dilihat pada program Lat_Sorting_07a.

/* Program Pengurutan Metode Insertion Sort
  Pengurutan Secara Menaik
  Nama File : Lat_Sorting_07a */

#include<iostream.h>
#include<conio.h>
#include<iomanip.h>

void main()
{
  int Nilai[20];
  int i, j, k, N;
  int temp;
  cout<<"Masukkan Banyak Bilangan : ";
  cin>>N;
  for(i=0; i<N; i++)
  {
    cout<<"Elemen ke-"<<i<<" : ";
    cin>>Nilai[i];
  }
  
  //Proses Cetak sebelum diurutkan
  cout<<"\nData sebelum diurut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
    
  //Proses Pengurutan
  for(i=1; i<N; i++)
  {
    temp = Nilai[i];
    j=i-1;
    while((temp <= Nilai(j)) && (j>=1))
    {
      Nilai[j+1] = Nilai[j];
      j--;
    }
    if(temp >= Nilai[j])
      Nilai[j+1] = temp;
    else
    {
      Nilai[j+1] = Nilai[j];
      Nilai[j] =  temp;
    }
    cout<<endl;
    for(k=0; k<N; k++)
      cout<<setw(3)<<Nilai[k];
  }
  
  //Proses Cetak Setelah diurutkan
  cout<<"\nData Setelah di urut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
  getch();
}

 

Contoh: Misalkan kita mempunyai array Nilai sebanyak 8 elemen akan diurutkan secara menurun dengan metode Insertion Sort: 25, 72, 30, 45, 20, 15, 6, 50. Urutan langkah pengurutannya seperti berikut:

Langkah -1: Nilai[0] diasumsikan telah terurut

proses insertion sort menurun ke-1

Langkah -2: cari lokasi yang tepat untuk Nilai[2] pada Nilai[0..0]. Dalam hal ini, ternyata lokasi yang tepat adalah 0, maka Nilai[0] digeser ke kanan satu posisi dan Nilai[1] menempati posisi ke 0, sehingga diperoleh array seperti berikut:

proses insertion sort menurun ke-2

Langkah -3: cari lokasi yang tepat untuk Nilai[2] pada Nilai[0..1]. Dalam hal ini, ternyata lokasi yang tepat adalah 1, maka Nilai[1] digeser satu posisi ke kanan sehingga Nilai[2] di posisi ke 1, sehingga diperoleh array seperti berikut:

proses insertion sort menurun ke-3

Langkah -4: cari lokasi yang tepat untuk Nilai[3] pada Nilai[0..2]. Dalam hal ini, ternyata lokasi yang tepat adalah 1, maka Nilai[1] dan Nilai[2] digeser satu posisi ke kanan sehingga Nilai[3] di posisi ke 1, sehingga diperoleh array seperti berikut:

proses insertion sort menurun ke-4

Langkah -5: cari lokasi yang tepat untuk Nilai[4] pada Nilai[0..3]. Dalam hal ini, ternyata lokasi yang tepat adalah 4, tapi karena oleh dirinya sendiri maka tidak ada pergeseran, sehingga array seperti berikut:

proses insertion sort menurun ke-5

Langkah -6: cari lokasi yang tepat untuk Nilai[5] pada Nilai[0..4]. Dalam hal ini, ternyata lokasi yang tepat adalah 5, tapi karena oleh dirinya sendiri maka tidak ada pergeseran, sehingga array seperti berikut:

proses insertion sort menurun ke-6

Langkah -7: cari lokasi yang tepat untuk Nilai[6] pada Nilai[0..5]. Dalam hal ini, ternyata lokasi yang tepat adalah 6, tapi karena oleh dirinya sendiri maka tidak ada pergeseran, sehingga array seperti berikut:

proses insertion sort menurun ke-7

Langkah -8: cari lokasi yang tepat untuk Nilai[7] pada Nilai[0..6]. Dalam hal ini, ternyata lokasi yang tepat adalah 1, maka Nilai[1], Nilai[2], Nilai[3], Nilai[4], Nilai[5], Nilai[6] digeser satu posisi ke kanan sehingga Nilai[7] di posisi ke 1, diperoleh array seperti berikut:

proses insertion sort menurun selesai

Selesai. Dan array telah terurut secara menaik. Program untuk mengurutkan elemen array secara menaik dengan metode Insertion Sort dapat dilihat pada program Lat_Sorting_07a.

//* Program Pengurutan Metode Insertion Sort
  Pengurutan Secara Menurun
  Nama File : Lat_Sorting_07b */

#include<iostream.h>
#include<conio.h>
#inlcude<iomanip.h>

void main()
{
  int Nilai[20];
  int i, j, k, N;
  int temp;
  //bool ketemu;
  cout<<"Masukkan Banyak Bilangan : ";
  cin>>N;
  for(i=0; i<N; i++)
  {
    cout<<"Elemen ke-"<<i<<" : ";
    cin>>Nilai[i];
  }
  
  //Proses Cetak Sebelum diurutkan
  cout<<"\nData sebelum diurut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
    
  //Proses Pengurutan
  for(i=1; i<N; i++)
  {
    temp = Nilai[i];
    j=i-1;
    while((temp > Nilai[i]) && (j>=1))
    {
      Nilai[j+1] = Nilai[j];
      j--;
    }
    if(temp <= Nilai[j])
      Nilai[j+1] = temp;
    else
    {
      Nilai[j+1] = Nilai[j];
      Nilai[j] = temp;
    }
    cout<<endl;
    for(k=0; k<N; k++)
      cout<<setw(3)<<Nilai[k];
  }
  
  //Proses Cetak Setelah diurutkan
  cout<<"\nData Setelah di urut : ";
  for(i=0; i<N; i++)
    cout<<setw(3)<<Nilai[i];
  getch();
}
 
 
 
 
 
 
 
Nama  : A .MUH Alryan Pangeran Syamsibah
Nim   : 200210502027
Kelas : Teknik Komputer B