Assalamualaikum sobat, postingan ane kali ini membahas soal "Macam-macam Sorting dalam Bahasa Java
Bubble Sort
Bubble sort merupakan algoritma
sorting sederhana. Algoritma
ini dimulai pada
awal set data.
Ia membandingkan dua
elemen pertama, dan jika yang pertama adalah
lebih besar dari yang
kedua, maka swap mereka. Terus melakukan
hal ini untuk setiap pasangan elemen berdekatan
dengan akhir kumpulan
data. Ia kemudian mulai lagi dengan dua elemen pertama, mengulang
sampai tidak ada swap
telah terjadi pada lulus terakhir. Rata-rata
Algoritma dan kinerja
kasus terburuk adalah
O (n2), sehingga
jarang digunakan untuk
menyortir besar, unordered,
set data. Gelembung
sort dapat digunakan untuk mengurutkan sejumlah
kecil item (dimana
inefisiensi adalah bukan hukuman tinggi).
Gelembung sort juga
dapat secara efisien digunakan pada daftar yang
sudah diurutkan kecuali
untuk jumlah yang sangat kecil elemen. Misalnya,
jika hanya satu
unsur yang tidak
sesuai, bubble sort hanya akan memakan waktu 2n.
Jika dua unsur yang
tidak sesuai, bubble sort hanya akan mengambil
paling banyak 3n waktu.
Gelembung sort rata-rata kasus
dan kasus terburuk
keduanya O (n
²).
Selection Sort
Semacam Seleksi adalah
semacam perbandingan di tempat. Ini memiliki O (n2) kompleksitas, sehingga tidak
efisien dalam daftar besar,
dan umumnya melakukan lebih buruk dari insertion
sort serupa. Seleksi semacam terkenal karena
kesederhanaan, dan juga memiliki
keunggulan kinerja lebih algoritma yang
lebih rumit dalam situasi tertentu. Algoritma mencari
nilai minimum, swap
dengan nilai di
posisi pertama, dan mengulangi langkah-langkah untuk sisa daftar.
Itu tidak lebih dari
swap n, dan
dengan demikian berguna dimana swapping sangat
mahal.
Insertion
Sort
Insertion sort
merupakan algoritma sorting sederhana yang relatif efisien untuk daftar kecil
dan sebagian besar daftar-disortir, dan sering digunakan sebagai bagian dari
algoritma yang lebih canggih. Ia bekerja dengan mengambil unsur-unsur dari satu
daftar dengan satu dan memasukkan mereka dalam posisi yang benar mereka ke
dalam daftar diurutkan baru. Pada array, daftar baru dan elemen-elemen yang tersisa
dapat berbagi ruang array, tetapi penyisipan mahal, membutuhkan menggeser semua
elemen-elemen berikut alih oleh satu. Shell sort (lihat di bawah) adalah varian
dari insertion sort yang lebih efisien untuk daftar yang lebih besar.
Shell
Sort
Shell sort diciptakan
oleh Donald Shell
pada tahun 1959. Ini meningkatkan atas bubble
sort dan insertion sort dengan menggerakkan keluar
dari elemen-elemen memesan lebih dari satu posisi pada suatu waktu. Salah satu implementasi dapat digambarkan sebagai mengatur urutan data
dalam array dua
dimensi dan kemudian
menyortir kolom dari
array menggunakan insertion sort.
Comb Sort
Comb Sort adalah semacam algoritma
sorting yang relatif sederhana
awalnya dirancang oleh Wlodzimierz
Dobosiewicz pada tahun 1980. Kemudian ditemukan kembali dan dipopulerkan oleh
Stephen Lacey dan Richard Box dengan
sebuah artikel majalah Byte diterbitkan pada
bulan April 1991. Sisir semacam meningkatkan pada
bubble sort, dan algoritma
saingan seperti Quicksort.
Ide dasarnya adalah untuk menghilangkan kura-kura,
atau nilai kecil
dekat akhir daftar,
karena dalam semacam
gelembung menyortir ini sangat melambat.
(Kelinci, nilai besar
sekitar awal daftar,
tidak menimbulkan masalah di bubble sort.).
Merge
Sort
Merge sort mengambil
keuntungan dari kemudahan penggabungan
sudah daftar diurutkan
ke daftar diurutkan baru. Dimulai dengan
membandingkan setiap dua elemen (yaitu,
1 dengan 2,
kemudian 3 dengan
4 ...) dan
swapping mereka jika
yang pertama datang
setelah kedua. Kemudian
masing-masing menggabungkan daftar yang dihasilkan dua
menjadi daftar empat, kemudian menggabungkan daftar
tersebut empat, dan seterusnya,
sampai akhirnya dua
daftar digabungkan ke dalam daftar diurutkan
akhir. Dari algoritma
yang dijelaskan di sini, ini adalah yang pertama yang baik daftar
skala yang sangat besar, karena kasus terburuk
running time adalah O (n log n). Merge
sort telah melihat
lonjakan yang relatif baru dalam popularitas
untuk implementasi praktis, yang digunakan
untuk rutin semacam
standar dalam bahasa pemrograman Perl, [5]
Python (sebagai timsort
[6]), dan Jawa
(juga menggunakan timsort per JDK7
[7 ]), antara
lain. Merge sort
telah digunakan di
Jawa setidaknya sejak
2000 di JDK1.3.
Heap
Sort
Heapsort adalah versi yang
jauh lebih efisien
selection sort. Ia juga bekerja dengan menentukan
elemen (atau terkecil)
terbesar daftar, menempatkan
bahwa pada akhir
(atau awal) dari daftar,
kemudian melanjutkan dengan sisa daftar,
tapi menyelesaikan tugas ini secara
efisien dengan menggunakan
struktur data yang
disebut tumpukan, tipe khusus pohon biner.
Setelah daftar data
telah dibuat menjadi tumpukan, simpul akar
dijamin menjadi unsur
(atau terkecil) terbesar.
Ketika dipindahkan dan ditempatkan di akhir
daftar, tumpukan adalah
ulang sehingga elemen
terbesar yang tersisa bergerak ke akar.
Menggunakan heap, menemukan elemen terbesar
berikutnya membutuhkan O (log n) waktu,
bukan O (n)
untuk linear scan
di selection sort sederhana. Hal ini memungkinkan
heapsort untuk menjalankan dalam O (n log n) waktu, dan
ini juga merupakan kompleksitas kasus terburuk.
Quick
Sort
Quicksort adalah membagi
dan menaklukkan algoritma
yang mengandalkan operasi partisi: untuk
partisi array, kita
memilih sebuah elemen, yang disebut pivot, memindahkan semua unsur kecil
sebelum poros, dan
memindahkan semua elemen yang lebih besar setelah itu. Hal ini
dapat dilakukan secara
efisien dalam waktu linier dan di tempat.
Kami kemudian secara
rekursif mengurutkan sublists
lebih kecil dan lebih
besar. Implementasi Efisien
quickSort (dengan partisi di-tempat)
biasanya macam stabil
dan agak rumit,
tetapi adalah salah satu dari algoritma pengurutan tercepat
dalam praktek. Bersama dengan sederhana O (log
n) penggunaan ruang,
ini membuat salah
satu quickSort dari algoritma pengurutan yang
paling populer, tersedia di perpustakaan banyak
standar. Isu paling kompleks
di quickSort adalah
memilih elemen pivot
yang baik; konsisten pilihan yang buruk pivots
dapat mengakibatkan drastis lambat O
(n ²) kinerja,
tetapi jika di
setiap langkah kita memilih median sebagai
pivot maka ia
bekerja dalam O (n log n ). Menemukan
median, bagaimanapun, adalah O (n) operasi pada daftar
unsorted, dan karena
itu menuntut hukuman sendiri.
Counting
Sort
Counting Sort berlaku
jika setiap masukan diketahui milik set
tertentu, S, kemungkinan.
Algoritma ini berjalan
di O (| S | + n) dan O (| S |) memori di mana n
adalah panjang dari input. Ia bekerja dengan
membuat sebuah array integer ukuran |
S | dan menggunakan bin i
untuk menghitung kejadian
anggota i S
dalam masukan. Setiap masukan kemudian dihitung oleh
incrementing nilai bin terkait. Setelah
itu, array menghitung adalah dilingkarkan melalui
untuk mengatur semua masukan dalam rangka.
Algoritma sorting ini tidak bisa sering
digunakan karena S
harus cukup kecil
agar bisa efisien, namun algoritma ini
sangat cepat dan menunjukkan perilaku asimtotik
besar sebagai meningkat
n. Hal ini juga
dapat dimodifikasi untuk menyediakan
perilaku yang stabil.
Bucket
Sort
Bucket sort
adalah membagi dan menaklukkan algoritma sorting yang generalizes Counting
mengurutkan berdasarkan partisi array ke dalam jumlah terbatas ember. Setiap
ember kemudian diurutkan secara individual, baik menggunakan algoritma sorting
yang berbeda, atau dengan rekursif menerapkan algoritma sorting ember. Sebuah
variasi dari metode ini disebut semacam hitungan satu buffer lebih cepat
daripada quickSort dan memakan waktu sekitar waktu yang sama untuk berjalan di
setiap set data. Karena kenyataan bahwa semacam ember harus menggunakan
sejumlah ember yang terbaik adalah cocok untuk digunakan pada set data lingkup
terbatas. Bucket sort akan cocok untuk data seperti nomor jaminan sosial - yang
memiliki banyak variasi.
Radix
Sort
Radix sort adalah
sebuah algoritma yang macam angka dengan
digit individu pengolahan.
n digit angka
yang terdiri dari masing-masing k diurutkan dalam
waktu O (n
° K). Radix sort
bisa proses digit
setiap angka mulai
dari angka signifikan
paling sedikit (LSD) atau digit yang paling
signifikan (MSD). Hasil uji BNT macam algoritma
pertama daftar dengan paling signifikan angka
sambil menjaga agar
relatif mereka menggunakan
semacam stabil. Kemudian
macam mereka dengan
angka berikutnya, dan seterusnya dari paling
signifikan yang paling signifikan, berakhir dengan
sebuah daftar diurutkan.
Sedangkan jenis LSD
radix memerlukan penggunaan
semacam stabil, MSD
algoritma radix sort
tidak (kecuali sorting
yang stabil yang diinginkan). Di tempat semacam
MSD radix tidak
stabil. Adalah umum
untuk algoritma semacam
menghitung untuk digunakan
secara internal oleh jenis radix. Hybrid
pemilahan pendekatan, seperti menggunakan insertion sort sampah kecil untuk
meningkatkan kinerja semacam radix signifikan.
Distribution
Sort
Distribution
Sort mengacu pada setiap algoritma sorting dimana data didistribusikan dari
input untuk struktur antara beberapa yang kemudian dikumpulkan dan ditempatkan
pada output. Lihat Bucket sort.
Tim
Sort
Distribusi semacam mengacu pada setiap
algoritma sorting dimana data didistribusikan dari input untuk struktur antara
beberapa yang kemudian dikumpulkan dan ditempatkan pada output. Lihat Bucket
sort.Download file
Post a Comment