Selasa, 21 Desember 2010

Sejarah Perkembangan Virus



Sejarah Perkembangan Virus VIRUS adalah suatu aplikasi yang dapat mereplikasi diri dalam suatu jaringan komputer, bersifat merusak dan memiliki kemampuan untuk menginfeksi file lain menjadi memiliki sifat-sifat yang sama seperti dirinya. Virus akan mengubah ukuran program yang terinfeksi tanpa mengubah tanggal modifikasi suatu aplikasi.
Virus Timeline:
Tahun 1949
John von Newman, yang menciptakan Electronic Discrete Variable Automatic Computer (EDVAC), memaparkan makalahnya yang berjudul “Theory and Organization of Complicated Automata”. Dalam makalahnya dibahas kemungkinan program yang dapat menyebar dengan sendirinya.
Tahun 1950-1960
Bell Labs membuat suatu game eksperimental dimana pemainnya menggunakan program jahat untuk menyerang komputer pemain lainnya mencoba mengimplementasikan teori yang diungkapkan oleh john v neuman. Mereka bermain-main dengan teori tersebut untuk suatu jenis game.
Tahun 1970
Perusahaan Xerox memperkenalkan suatu program yang digunakan untuk membantu kelancaran kerja. Creeper virus adalah virus eksperimental yaitu suatu program untuk menggandakan diri ditulis oleh Bob Thomas dengan menampilkan pesan “I’m the creeper, catch me if you can!”. Program “Reaper” dibuat untuk menghapus virus Creeper.
Tahun 1974
Virus Wabit adalah bukan merupakan virus melainkan suatu “Fork bomb” yang merupakan suatu program yang memperbanyak salinan dari suatu data pada komputer.
Tahun 1975
Penulis kisah sci-fi, John Brunner, membayangkan suatu worm komputer menyebar melalui jaringan.
Tahun 1980
Program yang tadinya dipergunakan sebagai permainan ’berbahaya’ tersebut akhirnya keluar dari lab, menyebar diluar lingkungan laboratorium, dan mulai beredar di dunia cyber.
Jürgen Kraus menulis thesis “Selbstreproduktion bei Programmen” (self-reproduction of programs / program yang bisa memperbanyak diri sendiri).
Tahun 1981-1982
Sebuah Virus yang bernama sama dengan pembuatnya, Elk Cloner, lahir di di TEXAS A&M. Menyebar melalui disket Apple II yang memiliki operating system Apple Os. Sang perusak ini menampilkan pesan di layar : “It will get on all your disks-It will infiltrate your chips–yes it is Cloner!-It will stick to you like glue-It will modify RAM too-send in the Cloner!”
Tahun 1983
Len Adleman meresmikan nama ”VIRUS” dalam sebuah seminar yang membahas cara membuat virus and memproteksi diri dari virus.
Fred Cohen mengenalkan istilah virus komputer di dalam thesisnya. Dia mendefinisikan bahwa virus merupakan suatu program yang dapat ‘menjangkiti’ program lain dengan memodifikasi serta ada kemungkinan berevolusi dengan sendirinya.
November: Lehigh University, Cohen menunjukkan virus-program seperti pada VAX11/750 sistem. Program ini dapat meng-install sendiri, atau menulari, sistem lainnya.
Tahun 1986
Virus komputer pertama bernama Brain ditulis oleh dua orang bersaudara di Pakistan. virus Brain (dikenal juga dengan nama Virus Pakistan) menyebarluas di Indonesia, merupakan Virus paling menggemparkan dikala itu. Karena penyebarannya yang luar-biasa itulah tahun ini justru disebut-sebut oleh sebagian orang Indonesia sebagai awal munculnya Virus komputer. Kelahiran virus ini juga bersamaan dengan [PC-Write Trojan] dan [Virdent].
Desember : Ralf Burger menyerahkan Virden yaitu suatu model virus program pada pertemuan Underground Chaos Computer Club di Jerman.
Tahun 1987
Oktober : Jerussalem Virus dideteksi berada di kota Jerussalem yang menghancurkan semua executable file pada komputer yang diinfeksinya.
November: Sca virus, sebuah virus boot sektor untuk Amiga muncul, segera membuat pandemi virus. Beberapa waktu kemudian, sca Merilis lagi virus lainnya yang lebih merusak yaitu Virus Byte Bandit.
Desember : Worm yang bernama Christmas tree menyerang jaringan komputer IBM.
Tahun 1988
Juni: Festering Hate Apple ProDOS virus menyebar di Underground Pirate BBS dan mulai menjangkiti semua sistem jaringan utama.
November : Morris worm yang dibuat oleh Robert Tappan Morris menginfeksi mesin DEC VAX dan SUN yang menggunakan OS BSD UNIX yang terkoneksi pada internet sehinggan worm ini penyebarannya sangat cepat yang kemudian diketahui sebagai program eksploit buffer overrun.
Tahun 1989
Ada orang iseng yang menyebarkan file “AIDS information program“ dan celakanya, begitu file ini dibuka, yang didapat bukannya info tentang AIDS, tapi virus yang mengenkripsi harddisk dan meminta bayaran untuk kode pembukanya.
Oktober : Ghostball merupakan virus multipartite pertama.
Tahun 1990
Bulgarian virus exchange factory (VX) BBS didirikan. Tips-trik pembuatan virus computer disebarkan melalui BBS ini. Mark Ludwig menulis sebuah buku yang berjudul “The Little Black Book of Computer Viruses”. Dalam buku tersebut dibahas langkah-langkah pembuatan virus komputer.
Tahun 1991,
Virus polymorphic pertama lahir. Virus yang diberi nama Tequila ini datang dari Switzerland.
Tahun 1992
Terjadi kepanikan di dunia terhadap Virus Michelangelo. Namun penyebaran virus ini kurang begitu meluas (hanya memakan sedikit korban).
Tahun 1993
Virus “Leandro & Kelly” and “Freddy Krueger“ menyebar dengan cepat lewat distribusi BBS dan Shareware.
Tahun 1994
Good Times, virus hoax pertama muncul di dunia.
Tahun 1995
Muncul serangan besar-besaran. Pada Perusahaan-perusahaan besar yang kemudian dilumpuhkan, diantaranya Griffith Air Force Base, Korean Atomic Research Institute, NASA, IBM dan masih banyak PERUSAHAAN RAKSASA lain yang dianiaya oleh virus “THE INETRNET LIBERATION FRONT” di hari ~Thanksgiving~. Karena keberanian dan kedahsyatan serangan itu, tahun 1995 dijuluki sebagai tahunnya para Hacker dan Cracker.
Di tahun ini juga lahir Concept, virus macro pertama yang menyerang dokumen Microsoft Word.
Tahun 1996
Boza, virus pertama yang ditujukan khusus untuk Windows 95 terlahir. Muncul juga Laroux, virus pertama yang menginfeksi MS Excel. Staog, juga merupakan Virus pertama yang menginfeksi Linux.
“Ply” – DOS 16-bit merupakan polymorphic virus yang tampil pada permutation engine.
Tahun1998
Lahir Strange Brew, merupakan Virus Java pertama. Lahir juga Back Orifice, Trojan pertama menyebarluas, memungkinkan user tidak sah untuk mengendalikan komputer lain melalui internet..
June: CIH atau Chernobyl menjadi virus pertama yang mampu untuk mengganggu hardware komputer.
Tahun 1999
Maret : Mellisa, virus yang menyebarkan dirinya melalui e-mail menyebar ke seluruh dunia. Kemudian virus Bubbleboy, menjadi virus pertama yang mampu menginfeksi komputer ketika Anda membaca e-mail Anda. Muncul juga Corner, virus pertama yang menginfeksi MS Project files.
June : Terdeteksinya ExploreZip worm, yang menyerang Microsoft Office dokumen.
Happy99 worm yang mnyusup pada email sehingga menginfeksi Outlook Express dan IE pada Windows 95 dan Windows 98 dengan menampilkan kembang api serta ucapan selamat tahun baru.
December : Sub7, or SubSeven, adalah suatu backdoor program yang terkenal, Menginfeksi komputer dengan cara menyembunyikan kursor komputer, merubah system setting atau membuka website porno secara tiba-tiba dan bisa juga digunakan sebagai aplikasi terlarang seperti mencuri data karu kredit atau sebagai program keylogger.
Tahun 2000
Love Bug, menjadi virus e-mail yang sukses. Pada saat itu juga ditemukan virus pada sistem operasi Palm.
Muncul Serangan Denial of Service (DoS) yang melumpuhkan Yahoo, Amazon dan situs-situs raksasa lainnya yang diakibatkan oleh worm. Worm bernama Love Letter melumpuhkan e-mail systems di penjuru dunia.
Worm Timofonica mengacaukan jaringan telepon Spanyol.
Liberty, worm pertama yang menyerang PDA.
Pirus, dari keluarga virus concept menginfeksi file-file HTML and PHP.
The backdoor trojan to worm, Barok, telah dibuat oleh programmer Filipina Onel de Guzman, de Guzman menyangkal dirinya yang melepaskan trojan ini hal itu dia tunjukkan bahwa dia mungkin telah didahului oleh orang lain dengan memakai namanya.
Tahun 2001
Sadmind worm menyebar oleh memanfaatkan lubang di Sunday Solaris dan Microsoft IIS.
Sircam worm dilepaskan, menyebarkan melalui sistem Microsoft melalui e-mail dan perlindungan jaringan saham.
Code Red Worm menyebar dan Index Server ISAPI Extension pada Microsoft Internet Information Services.
Code Red II dimulai agresif menyebarkan ke sistem Microsoft, terutama di Cina. Setelah di tulis ulang oleh pambuatnya.
Nimda worm ditemukan dan menyebar melalui berbagai cara termasuk kerentanan di Microsoft Windows setelah serangan oleh Code Red II dan Sadmind worm.
Klez adalah worm pertama yang dapat diidentifikasi.
Virus yang mengklaim dirinya berisi foto pemain tenis Anna Kournikova menginfeksi ribuan komputer di seluruh dunia. Tahun 2001, kembali dunia harus menghadapi sederetan serangan worm. Gnuman (Mandragore) terlahir. Worm ini menyamar sebagai file MP3. Winux, worm yang menyerang mesin Windows dan LINUX, hadir dari Czech Republic.
Tahun 2002
David L Smith, pembuat virus Mellisa, diputus oleh pengadilan Amerika untuk di penjara selama 20 bulan. LFM-926, lahir virus pertama yang menginfeksi file Shockwave Flash (.SWF). Menampilkan pesan saat file tersebut jalankan: “Loading.Flash.Movie..”
Beast virus yang berbasis windows backdoor trojan horse, lebih dikenal di komunitas underground cracker sebagai RAT (Remote Administration Tool).Virus ini mampu menjangkiti hampir semua OS Windows XP sampai Windows 95. Ditulis dalam Bahasa Delphi dan Rilis pertama oleh Tayate pada tahun 2002, dan versi terbaru dirilis 3 Oktober 2004
Tahun 2003
.January: SQL Slammer Worm, alias di Sapphire worm, menyerang kerentanan dalam Microsoft SQL Server dan MSDE yang menyebar luas dan menyebabkan masalah di Internet.
April : Graybird adalah Trojan juga dikenal sebagai Backdoor.Graybird.
June : ProRat adalah backdoor trojan horse buatan orang turki yang berbasis Microsoft, lebih dikenal sebagai RAT (Remote Administration Tool).
Agustus : Worm Blaster menyebar di internet dengan memanfaatkan kelemahan pada sistem operasi Windows. Pada saat yang sama juga menyebar virus e-mail yang bernama Sobig, ini membuat bulan Agustus 2003 menjadi bulan terburuk untuk insiden virus pada tahun tersebut. Sobig-F dicatat sebagai virus yang paling sukses menyebar.
Agustus : Welchia (Nachi) worm ditemukan. Worm ini mencoba untuk menghapus blaster worm dan patch Windows.
Agustus : Sobig worm (Sobig.F Worm) menyebar dengan cepat melalui sistem Microsoft melalui email dan jaringan peer sharing.
Oktober :Worm Sober pertama kali ditemukan pada sistem Microsoft dan mempertahankan keberadaannya sampai 2005 dengan berbagai varian baru. Bersamaan dengan serangannya pada jaringan weakpoints dalam jumlah besar yang menyebabkan banyak kerusakan.
Tahun 2004
January : Virus MyDoom muncul, dan sampai saat ini memegang rekor tercepat untuk menyebarkan secara massal pada mailer worm.
Maret : Witty worm adalah worm yan banyak menginfeksi didalam ISS (Internet Security Sytem) yang dengan meng-exploit celah pada IIS itu sendiri.
Mei : Jaringan internet dunia dikacaukan oleh worm SASSER.
Agustus: Nuclear RAT (singkatan dari Nuklir Remote Administration Tool) adalah backdoor trojan horse yang menginfeksi keluarga sistem Windows NT (Windows 2000, XP, 2003).
Agustus : Vundo, atau Vundo Trojan (juga dikenal sebagai Virtumonde atau Virtumondo dan kadang-kadang disebut sebagai MS Juan) adalah Trojan horse yang diketahui menyebabkan popup dan periklanan untuk menipu antispyware program, dan secara sporadis melakukan hal buruk lainnya termasuk kinerja degradasi dan penolakan pelayanan termasuk di beberapa situs Web Google dan Facebook.
October : Bitfrost, juga dikenal sebagai Bitfrose, merupakan backdoor trojan yang dapat menulari Windows 95 samapi Windows Vista.
Desember: Santy, atau dikenal “webworm” diluncurkan. It exploited a vulnerability in phpBB and used Google in order to find new targets. Virus ini mengeksploitasi kerentanan dalam phpBB dan Google untuk menemukan target baru.
Tahun 2005
Agustus : Zotob worm dan beberapa variasi Virus Temas ditemukan dalam sistem Microsoft.
Oktober: Samy XSS Worm yang tercepat penyebarannya.
December : Zlob Trojan, juga dikenal sebagai Trojan.Zlob, merupakan trojan horse yang diperlukan masquerades sebagai video codec dalam bentuk ActiveX.
December : Bandook atau Bandook Rat (Bandook Remote Administration Tool) adalah backdoor trojan horse yang menginfeksi keluarga Windows OS.
Tahun 2006
January: Tema worm telah ditemukan yang menyebar pada mass-mailing.
Februari: Pertama kali ditemukan malware untuk Mac OS X, yang low-risk trojan-horse yang dikenal sebagai OSX / Leap-A atau OSX / Oompa-A.
September: Stration atau Warezov Worm pertama kali ditemukan.
Tahun 2007
Januari : Storm Worm diidentifikasi sebagai email spam yang mengancam Microsoft sistem.
Tahun 2008
Januari : MacSweeper adalah Roque software pertama untuk Mac OS X.
Februari: Mocmex merupakan trojan, yang ditemukan dalam bingkai foto digital.
Maret: Torpig, juga dikenal sebagai Sinowal dan Mebroot, adalah Trojan horse yang mematikan aplikasi anti virus di Windows.
Mei: Rustock.C, Spambot-jenis malware dengan kemampuan rootkit advance, diumumkan telah terdeteksi pada sistem Microsoft.
Juli: Bohmini.A adalah Remote Acces Tool atau yang exploits trojan flaws keamanan di Adobe Flash 9.0.115 dengan Internet Explorer 7.0 dan Firefox 2.0 di Windows XP SP2.
Juli: Koobface adalah komputer worm yang menyerang pengguna di situs jaringan sosial Facebook dan Myspace. [update].
Varian-varian baru Bagle menyebarluas, namun kemudian meredup karena pembuatnya tertangkap. Penyebaran NETSKY juga mengalami peningkatan sesaat dan hanya lahir sedikit varian-varian baru. Di tahun-tahun ini tidak begitu banyak Virus & Worm baru yang cukup menggemparkan di kalangan dunia seperti para pendahulunya kecuali serangan-serangan virus lokal.
Tahun 2009
Januari: Conficker Worm menginfeksi hampir 20 juta server Microsoft yang berjalan pada sistem Windows 2000 sampai Windows Vista dan Windows Server 2008. Microsoft telah mengalokasikan dana sebesar $ 250.000 untuk menangkap penciptanya.
Sampai sekarang masih banyak virus-virus komputer bertebaran dan bahkan dalam setiap hari jutaan virus komputer tercipta dari seluruh penjuru dunia termasuk Indonesia.
3.      

Macam – macam serangan pada Jaringan komputer


1
1. LAND Attack:
LAND attack merupakan salah satu macam serangan terhadap suatu server/komputer yang terhubung dalam suatu jaringan yang bertujuan untuk menghentikan layanan yang diberikan oleh server tersebut sehingga terjadi gangguan terhadap layanan atau jaringan komputer tersebut. Tipe serangan semacam ini disebut sebagai Denial of Service (DoS) attack
2. Ping of Death
Ping of Death merupakan suatu serangan (Denial of Service) DoS terhadap suatu server/komputer yang terhubung dalam suatu jaringan. Serangan ini memanfaatkan fitur yang ada di TCP/IP yaitu packet fragmentation atau pemecahan paket, dan juga kenyataan bahwa batas ukuran paket di protokol IP adalah 65536 byte atau 64 kilobyte. Penyerang dapat mengirimkan berbagai paket ICMP (digunakan untuk melakukan ping) yang terfragmentasi sehingga waktu paket-paket tersebut disatukan kembali, maka ukuran paket seluruhnya melebihi batas 65536 byte.
3. Teardrop
Teardrop attack adalah suatu serangan bertipe Denial of Service (DoS) terhadap suatu server/komputer yang terhubung dalam suatu jaringan. Teardrop attack ini memanfaatkan fitur yang ada di TCP/IP yaitu packet fragmentation atau pemecahan paket, dan kelemahan yang ada di TCP/IP pada waktu paket-paket yang terfragmentasi tersebut disatukan kembali. Dalam suatu pengiriman data dari satu komputer ke komputer yang lain melalui jaringan berbasis TCP/IP, maka data tersebut akan dipecah-pecah menjadi beberapa paket yang lebih kecil di komputer asal, dan paket-paket tersebut dikirim dan kemudian disatukan kembali di komputer tujuan.
4. Half-Open Connection
Half-open connection attack juga disebut sebagai SYN attack karena memanfaatkan paket SYN (synchronization) dan kelemahan yang ada di 3-way handshake pada waktu hubungan TCP/IP ingin dibentuk antara 2 komputer.
5. UDP Bomb Attack
UDP Bomb attack adalah suatu serangan bertipe Denial of Service (DoS) terhadap suatuserver atau komputer yang terhubung dalam suatu jaringan. Untuk melakukan serangan UDP Bomb terhadap suatu server, seorang penyerang mengirim sebuah paket UDP (User Datagram Protocol) yang telah dispoof atau direkayasa sehingga berisikan nilai-nilai yang tidak valid di field-field tertentu. Jika server yang tidak terproteksi masih menggunakan sistem operasi (operating system) lama yang tidak dapat menangani paketpaket UDP yang tidak valid ini, maka server akan langsung crash. Contoh sistem operasi yang bisa dijatuhkan oleh UDP bomb attack adalah SunOS versi 4.1.3a1 atau versi sebelumnya. Kebanyakan sistem operasi akan membuang paket-paket UDP yang tidak valid, sehingga sistem operasi tersebut tidak akan crash. Namun, supaya lebih aman, sebaiknya menggunakan paket filtering melalui firewall untuk memonitor dan memblokir serangan seperti UDP Bomb attack.
2.      

Sabtu, 02 Oktober 2010

mengenal sort


Algoritma Sorting


Dalam ilmu komputer dan matematika, algoritma pengurutan(sort) adalah algoritma yang menempatkan unsur-unsur daftar dalam urutan tertentu. Perintah yang paling sering digunakan adalah nomor urut dan ketertiban leksikografis. Efisien sortasi penting untuk mengoptimalkan penggunaan algoritma lainnya (seperti pencarian dan menggabungkan algoritma) yang membutuhkan diurutkan daftar untuk bekerja dengan benar, melainkan juga sering berguna untuk canonicalizing data dan untuk menghasilkan output terbaca-manusia. Lebih formal, output harus memenuhi dua kondisi:

1.                  Output adalah dalam rangka nondecreasing (setiap elemen tidak lebih kecil dari elemen sebelumnya sesuai dengan total order yang diinginkan);2.
2.                  Output adalah permutasi, atau penataan ulang, dari input.

Sejak awal komputasi, masalah pengurutan telah menarik banyak penelitian, mungkin karena kompleksitas penyelesaian secara efisien meskipun sederhana pernyataannya, akrab. Sebagai contoh, bubble sort dianalisis sejak 1956 [1] Walaupun banyak yang menganggapnya masalah dipecahkan, berguna algoritma pengurutan baru masih ditemukan (misalnya, seperti perpustakaan pertama kali diterbitkan pada tahun 2004).. Sorting algoritma yang lazim di kelas pengantar ilmu komputer, di mana kelimpahan algoritma untuk masalah memberikan pengenalan lembut ke berbagai konsep algoritma inti, seperti membagi besar O, notasi dan menaklukkan algoritma, struktur data, algoritma acak, terbaik, terburuk dan analisis kasus rata-rata, pengorbanan waktu-ruang, dan batas bawah.

Klarifikasi

Sorting algoritma yang digunakan dalam ilmu komputer sering dikelompokkan berdasar:

Ø    Kompleksitas Komputasi (perilaku terburuk, rata-rata dan terbaik) dari perbandingan unsur dalam hal ukuran daftar  \left( n \right). Untuk algoritma pengurutan khas perilaku yang baik adalah \mathcal{O}\left( n \log n\right)dan perilaku buruk adalah \mathcal{O}\left( n^2 \right). Ideal untuk semacam perilaku adalah \mathcal{O}\left( n \right),namun hal ini tidak mungkin dalam kasus rata-rata. Perbandingan algoritma pengurutan berbasis, yang mengevaluasi elemen daftar melalui operasi perbandingan abstrak kunci, memerlukan setidaknya \mathcal{O}\left( n \log n\right) perbandingan untuk input yang paling.
Ø    Komputasi kompleksitas swap (untuk "di tempat" algoritma).
Ø    Memory penggunaan (dan penggunaan sumber daya komputer lain). Secara khusus, beberapa algoritma pengurutan adalah "di tempat". Ini berarti bahwa mereka hanya perlu \mathcal{O}(1)atau\mathcal{O}(\log n)memori luar item yang disortir dan mereka tidak perlu membuat lokasi tambahan untuk data yang akan disimpan sementara, seperti di lain algoritma pengurutan.
Ø    Rekursi. Beberapa algoritma yang baik rekursif atau non-rekursif, sementara yang lain mungkin baik (misalnya, menggabungkan sort).
Ø    Stabilitas: algoritma pengurutan stabil menjaga urutan relatif dari record dengan kunci yang sama (yaitu, nilai-nilai). Lihat di bawah untuk informasi lebih lanjut.
Ø    Apakah atau tidak mereka adalah semacam perbandingan. Semacam perbandingan memeriksa data hanya dengan membandingkan dua elemen dengan operator perbandingan.
Ø    Metode Umum: penyisipan, pertukaran, seleksi, penggabungan, dll. jenis Efek termasuk bubble sort dan quickSort. Seleksi macam termasuk semacam shaker dan heapsort.
Ø    Adaptasi: Apakah atau tidak presortedness input mempengaruhi waktu berjalan. Algoritma yang mempertimbangkan hal ini diketahui adaptif.

Stabilitas

algoritma pengurutan Stabil menjaga urutan relatif dari record dengan kunci yang sama. Jika semua tombol berbeda maka perbedaan ini tidak diperlukan. Tetapi jika ada kunci sama, maka algoritma sorting stabil jika setiap kali ada dua catatan (katakanlah R dan S) dengan tombol yang sama, dan R muncul sebelum S dalam daftar yang asli, maka R akan selalu muncul sebelum S di daftar diurutkan. Apabila terdapat unsur yang sama tidak dapat dibedakan, seperti dengan bilangan bulat, atau lebih umum, data dimana seluruh elemen kunci, stabilitas tidak menjadi masalah. Namun, menganggap bahwa pasangan berikut nomor harus diurutkan berdasarkan komponen pertama mereka:


(4, 2)  (3, 7)  (3, 1)  (5, 6)


Dalam hal ini, dua hasil yang berbeda yang mungkin, salah satu yang menjaga urutan relatif dari record dengan kunci yang sama, dan satu yang tidak:

 
(3, 7)  (3, 1)  (4, 2)  (5, 6)   (Urutan dipertahankan)

  (3, 1)  (3, 7)  (4, 2)  (5, 6)   (Urutan diubah)
 

algoritma sorting yang tidak stabil dapat mengubah urutan relatif dari record dengan kunci yang sama, tetapi algoritma pengurutan stabil tidak pernah melakukannya. algoritma pengurutan tidak stabil dapat diterapkan khusus menjadi stabil. Salah satu cara untuk melakukan ini adalah artifisial memperpanjang perbandingan kunci, sehingga perbandingan antara dua objek dengan tombol dinyatakan sama akan memutuskan menggunakan urutan entri dalam urutan data aslinya sebagai pemecah-dasi. Mengingat urutan ini, bagaimanapun, sering melibatkan biaya komputasi tambahan.

Sorting berdasarkan tersier, primer sekunder, dll kunci semacam dapat dilakukan oleh setiap metode pengurutan, mengambil semua kunci semacam ke account dalam perbandingan (dengan kata lain, menggunakan kunci semacam tunggal komposit). Jika metode pengurutan stabil, juga memungkinkan untuk menyortir beberapa kali, setiap kali dengan satu tombol sort. Dalam hal bahwa kunci perlu diterapkan dalam urutan prioritas meningkat.

Contoh: sorting pasangan nomor seperti di atas dengan terlebih dahulu, maka kedua komponen:

(4, 2) (3, 7) (3, 1) (5, 6) (asli)



(3, 1) (4, 2) (5, 6) (3, 7) (setelah menyortir menurut komponen kedua)
(3, 1) (3, 7) (4, 2) (5, 6) (setelah menyortir menurut komponen pertama)


Di sisi lain:

(3, 7) (3, 1) (4, 2) (5, 6) (setelah menyortir menurut komponen pertama)
(3, 1) (4, 2) (5, 6) (3, 7) (setelah menyortir menurut Komponen kedua,
urutan oleh komponen pertama adalah terganggu).






Macam-macam sort

1.      Bubble Sort

Metode bubble sort merupakan metode tersederhana untuk melakukan pengurutan data , tetapi memiliki kinerja yang terburuk untuk data yang besar. Diberi nama “Bubble” karena proses pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya.Penukaran baru dilakukan kalau suatu kriteria terpenuhi.

Pengurutan Ascending : Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar.Pengurutan Descending: Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar.Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya, asc atau desc.Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya sampai dengan iterasi sebanyak n-1.Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan.

Bubble Sort adalah salah satu metode pengurutan (sorting) dengan cara membandingkan angka dalam satu waktu yang ada pada list, kemudian memperbaiki urutan angka – angka tersebut jika tidak mengikuti urutan yang ditentukan.
contoh:
input (input.txt)
5 6 8 4 8 9
1 3 6 4 8 4
1 0 6 9 5 8

input memiliki 6 kolom k dan 3 baris j

1. Baca file input.txt dan store setiap value kedalam baris dan kolom yang sesuai, misal variable: angka[j][k]

2. Gunakan for loop 2-d array untuk membaca susunan angka

01 for(int j=0;j<3;j++){//baris
02 for(int k=0;k<6;k++){//kolom
03 //bubble sorting : angka akan diswap bila angka berikutnya lebih besar dari angka sebelum
04 if(angka[j][k] < angka[j][k+1]){
05 int temp = angka[j][k];
06 angka[j][k] = angka[j][k+1];
07 angka[j][k+1] = temp;
08 }
09 cout<
10 }
11 cout<
12 }

sekarang variable angka telah diurutkan. bisa langsung tulis ke dalam file output.txt
output (output.txt):
9 8 8 6 5 4
8 6 4 4 3 1
9 8 6 5 1 0

ilustrasi pengurutan dengan bubble sortnya akan terlihat seperti pada table dibawah ini :

LANGKAH 1 :
1 2 3 4 5 6 POSISI DATA
22 10 15 3 8 2 Data Awal
22 10 15 3 2 8 tukar data 5 dengan 6
22 10 15 2 3 8 tukar data 4 dengan 3
22 10 2 15 3 8 tukar data 3 dengan 2
22 2 10 15 3 8 tukar data 2 dengan 1
2 22 10 15 3 8 LANGKAH 1 SELESAI

LANGKAH 2 :
1 2 3 4 5 6 POSISI DATA
2 22 10 15 3 8 Data Langkah 1 Akhir
2 22 10 3 15 8 tukar data 4 dengan 3
2 22 3 10 15 8 tukar data 3 dengan 2
2 3 22 10 15 8 LANGKAH 2 SELESAI

LANGKAH 3 :
1 2 3 4 5 6 POSISI DATA
2 3 22 10 15 8 Data Langkah 2 Akhir
2 3 22 10 8 15 tukar data 5 dengan 6
2 3 22 8 10 15 tukar data 4 dengan 3
2 3 8 22 10 15 LANGKAH 3 SELESAI

LANGKAH 4 :
1 2 3 4 5 6 POSISI DATA
2 3 8 22 10 15 Data Langkah 3 Akhir
2 3 8 22 10 15 tukar data 5 dengan 4
2 3 8 10 22 15 LANGKAH 4 SELESAI

LANGKAH 5 :
1 2 3 4 5 6 POSISI DATA
2 3 8 10 22 15 Tukar data 5 dengan 6
2 3 8 10 15 22 TERURUT



2.Exchange Sort

Metode Exchange Sort merupakan metode pengurutan data yang sangat mirip dengan Bubble Sort bahkan banyak yang mengatakan Bubble Sort sama dengan Exchange Sort. Namun perbedaan antara Exchange Sort dan bubble sort terletak dalam hal bagaimana membandingkan antar elemen-elemennya. Exchange sort membandingkan suatu elemen dengan elemen-elemen lainnya dalam array tersebut, dan melakukan pertukaran elemen jika perlu. Jadi ada elemen yang selalu menjadi elemen pusat (pivot).

Sedangkan Bubble sort akan membandingkan elemen pertama/terakhir dengan elemen sebelumnya/sesudahnya, kemudian elemen tersebut itu akan menjadi pusat (pivot) untuk dibandingkan dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya.


3.Selection Sort

Metode selection sort merupakan metode pengurutan data kombinasi antara sorting dan searching. Mekanismenya seperti berikut ini : Mula – mula suatu petunjuk (diberi nama posAwal ) yang menunjuk lokasi awal pengurutan data diatur agar berisi indeks pertama dalam larik. Selanjutnya dicari bilangan terkecil yang terletak antara posisi sesudah yang ditunjuk oleh penunjuk tersebut element yang terakhir dalam larik. Lokasi bilangan ini di tunjuk oleh posMin. Lalu tukarkan nilai bilangan terkecil tersebut dengan nilai yang di tunjukkan posAwal. Proses seperti ini di ulang dari posAwal berniali 0 hingga n-2 , dengan n menyatakan jumlah element larik.


4.Insertion Sort

Metode Insertion sort merupakan metode pengurutan data yang mirip dengan cara orang mengurutkan kartu, selembar demi selembar kartu diambil dan disisipkan (insert) ke tempat yang seharusnya sehinggan penambahan kartu tersebut akan membuat semua kartu tetap terurutkan. Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan ditempatkan (diinsert) diposisi yang seharusnya.Pada penyisipan elemen, maka elemen-elemen lain akan bergeser ke belakang.


5.Quick Sort

Metode Quick sort merupakan metode pengurutan data yang di kemukakan pertama kali oleh C. AR Hoare pada tahun 1962. Metode ini menggunakan strategi “pecah-belah” dengan mekanisme seperti berikut : Larik L[p..r] dengan indeks terkecil adalah p dan indeks terbesar adalah r disusun ulang (dipartisi) menjadi dua buah larik A[p..p] dan A[q+1…r] sehingga setiap elemen dalam A[p..q] selalu bernilai lebih kecil daripada A[q+1…r]. Selanjutnya kedua larik tersebut di urut secara rekursif. Dengan sendirinya kombinasi kedua larik tersebut membentuk larik dengan data yang telah di urut.

Membandingkan suatu elemen (disebut pivot) dengan elemen yang lain dan menyusunnya sedemikian rupa sehingga elemen- elemen lain yang lebih kecil daripada pivot tersebut terletak di sebelah kirinya dan elemen-elemen lain yang lebih besar daripada pivot tersebut terletak di sebelah kanannya. Sehingga dengan demikian telah terbntuk dua sublist, yang terletak di sebelah kiri dan kanan dari pivot. Lalu pada sublist kiri dan sublist kanan kita anggap sebuah list baru dan kita kerjakan proses yang sama seperti sebelumnya. Demikian seterusnya sampai tidak terdapat sublist lagi. Sehingga didalamnya telah terjadi proses Rekursif.


6.Merge Sort

Merge sort merupakan salah satu teknik sorting yang mengurutkan suatu data dengan cara penggabungan.Merge sort juga menggunakan proses divide and conquer pada rekursi.Berikut adalah langkah kerja merge sort :
1. Devide
Memilah elemen – elemen dari data menjadi dua bagian.
2. Conquer
Menyelesaikan setiap bagian dengan memanggil prosedur merge sort secara rekursif.
3. Kombinasi
Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan.

Proses rekursi akan berhenti jika telah mencapai elemen dasar, atau artinya jika bagian yang diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah sesuai rangkaian. Sebagai catatan, pengkombinasian dilakukan dengan cara pembandingan. Elemen yang nilainya lebih kecil akan masuk ke kotak terlebih dahulu dan mengisi bagian disebelah kiri terlebih dahulu.Pada merge sort, data yang akan digabungkan berada pada suatu array, sebutlah array x dan array yang digunakan untuk menampung hasil gabung adalah array yang berbeda dari array x tersebut, sebutlah array y. Penyalinan elemen data dari array x ke array y ditentukan oleh hasil perbandingan data kelompok pertama x(i) dan data kelompok setelahnya x(j). Apabila nilai x(i) lebih kecil dibanding x(j) maka x(i) disalin ke y(k) kemudian indeks I dan k masing – masing ditambah satu. Proses ini akan berulang sampai seluruh data habis diproses.


7.Shell Sort

Ditemukan oleh Donal Shell pada tahun 1959. Merupakan algoritma paling efisien dari kelas sorting O(n2). Algoritma ini memiliki kesamaan cara kerja dengan insertion sort, yaitu membandingkan elemen-elemen dengan jarak tertentu. Insertion sort membandingkan elemen – elemen data yang berdekatan (berjarak satu posisi), sedangkan shell sort membandingkan elemen berjarak tertentu, misalnya elemen yang berjarak 5 posisi atau 2 posisi dan pada akhirnya akan selesai pada pengurutan data yang berjarak 1 posisi. Namun nilai ini haruslah dicari sedemikian rupa agar tidak mengulangi atau merusak hasil sorting sebelumnya. Adapula nilai – nilai jarak yang dianjurkan adalah sebagai berikut :
1. Shell’s increment
1, 2, 4, 8
2. Hibbard’s increment
1, 3, 7, 15, …, 2k – 1
3. Sedgewick’s increment
1, 5, 19, 41, 109

Pada proses sorting, jarak yang diambil dilakukan secara menurun, sedangkan proses sorting elemennya dilakukan seperti insertion. Pada pengurutan elemen – elemen jarak lima, pengurutan dilakukan terhadap data ke-9, ke-4, ke-8, ke-3, dan seterusnya. Dimana jumlah data yang terlibat dalam suatu rangkaian pengurutan tidak selalu dua tetapi tergantung pada banyak data. Andaikan jumlah data adalah 11 maka pada rangkaian pengurutan pertama dilakukan pengurutan terhadap data ke-10, ke-5, dank e-0.

Contoh :
Rangkaian data :
1 2 3 4 5 6 7 8 9 10
2 5 1 3 9 7 8 0 5 4

Increment : 5

Maka data yang pertama dibandingkan adalah data ke-6 dengan ke-1 kemudian ke-7 dengan ke-2 , ke-8 dengan ke-3, ke-9 dengan ke-4, ke-10 dengan ke-5. Dan hasilnya adalah :
1 2 3 4 5 6 7 8 9 10
2 5 0 3 4 7 8 5 5 9

Increment : 2

Maka data yang selanjutnya dibandingkan adalah data ke-3 dengan ke-1, ke-4 dengan ke-2, ke-5 dengan ke-3, ke-6 dengan ke-4, ke-7 dengan ke-5, ke-8 dengan ke-6, ke-9 dengan ke-7,dan ke-10 dengan ke-8. Dan hasilnya adalah sebagai berikut :
1 2 3 4 5 6 7 8 9 10
0 3 2 5 4 5 5 7 8 9

Increment : 1

Maka data yang akan diurutkan adalah data ke-2 dengan ke-1, ke-3 dengan ke-2, ke-4 dengan ke-3, dan seterusnya sampai data ke-10 dengan ke-9. Dan hasilnya adalah sebagai berikut :
1 2 3 4 5 6 7 8 9 10
0 2 3 4 5 5 5 7 8 9

Dalam proses pengurutannya shell sort dapat lima kali lebih cepat bila dibandingkan dengan bubble sort dan kurang lebih dua kali lebih cepat bila dibandingkan dengan insertion sort. Namun, jika dibandingkan dengan merge, heap, ataupun quicksort, shellsort masih tergolong lebih lambat. Tetapi algoritma sorting yang begitu sderhana membuat shellsort merupakan pilihan yang cocok untuk melakukan sorting pada data kurang dari 5000 item atau data dengan ukuran tidak terlalu besar.

Kamis, 24 Desember 2009

apa

kelam tak ada hitam
tapi itu kelam

tunjukkan sebuah orasi
namun akhurnya emosi
anarki menjadi-jadi

siapa yang benar
atau salah
yang benar mencoba mencari
kesalahan dan
yang salah mencoba mencari
kebenaran

itulah manusia tak pernah
puas dengan apa yang telah
dilakukannnya
apa yang dilakukan
salah-benar.........
BENAR.