Contoh artikel ini menceritakan cara Java menggunakan penyortiran yang menggelegak untuk mengurutkan array. Bagikan untuk semua orang untuk referensi Anda. Spesifiknya adalah sebagai berikut:
1. Penyortiran gelembung:
Gunakan penyortiran yang menggelegak untuk mengurutkan array
2. Konsep Dasar:
Dua angka yang berdekatan dibandingkan pada gilirannya, menempatkan bagian depan desimal, dan jumlah besar di belakang. Artinya, dalam perjalanan pertama: pertama bandingkan angka pertama dan kedua, letakkan desimal sebelumnya, dan jumlah besar. Kemudian bandingkan angka kedua dan ketiga, letakkan desimal sebelumnya, dan setelah jumlah besar, lanjutkan, sampai dua angka terakhir, letakkan desimal sebelumnya, dan jumlah besar diletakkan. Pada titik ini, angka terbesar ditetapkan hingga akhir. Dalam perjalanan kedua: Mulai dari pasangan pertama (karena angka kedua dari yang kedua dan angka ketiga dapat dikurangi, angka pertama tidak lagi kurang dari angka kedua), letakkan desimal setelah meletakkannya, telah dibandingkan Sampai angka kedua dari belakang (posisi pertama sudah terbesar). di akhir perjalanan kedua, angka maksimum baru diperoleh dalam posisi kedua belakang (pada kenyataannya, di seluruh seri dua angka utama). Akibatnya, ulangi proses di atas sampai pesanan akhir selesai.
Ketiga, sadari ide:
Untuk implementasi dual -loop, variabel siklus luar diatur ke I, dan variabel sirkulasi dalam diatur ke J. Jika ada angka N yang perlu diurutkan, siklus eksternal diulangi N-1 kali, dan siklus bagian dalam mengulangi N-1, N-2, ..., 1 kali. Dua elemen yang membandingkan setiap kali terkait dengan siklus dalam J. Mereka dapat diidentifikasi dengan [j] dan [j+1] secara terpisah, dan nilai i adalah 1,2, ..., n-1 , N-1 untuk nilai masing-masing i, j adalah 0,1,2, ... ni.
Biarkan Panjang Array N:
1. Dibandingkan dengan dua data yang berdekatan, jika data sebelumnya lebih besar dari data selanjutnya, kedua data tersebut akan dipertukarkan.
2. Dengan cara ini, data terbesar adalah "tenggelam" ke posisi N-1 dari array setelah satu traversal ke data N-1.
3. N = n-1, jika n bukan 0, ulangi dua langkah pertama, jika tidak jenis selesai.
4. Implementasi Kode Java:
Paket ArrayDemo; / *** @Author pplsunny* @category. int [] a = {2, 4, 76, 12, 34, 23, 86}; * * Fungsi penyortiran gelembung didefinisikan sebagai penggunaan statis dan nyaman. ++) { / / / Ini adalah nomor kontrol untuk (int j = 0; j <a.length -i; j ++) {// j <a.length -i, jumlah elemen komparatif jika (a [j]> a [j + j + 1]) {int temp = a [j];
5. Analisis Kinerja:
Jika status awal dari urutan catatan adalah "urutan positif", proses penyortiran yang menggelegak hanya perlu diurutkan, dan hanya perbandingan N-1 selama proses penyortiran dilakukan tanpa catatan seluler; 1)/2 Perbandingan dan catatan perlu dilakukan. Oleh karena itu, kompleksitas total waktu penyortiran yang menggelegak adalah O (n*n).
6. Optimalisasi algoritma:
Metode kekurangan dan peningkatan metode penyortiran yang menggelegak:
Pertama, selama proses penyortiran, setelah urutan akhir dilakukan, meskipun data telah sepenuhnya diurutkan, program tidak dapat menentukan apakah akan menyelesaikan penyortiran. Nilai nilai awalnya untuk non -non -non -non -non -non -non -non -non -non -non -non -non -non -non -senough Nilai set. Setiap jenis diatur ke 0 sebelum dimulainya jenis. Di awal putaran penyortiran baru, periksa logo ini.
/ *** Fungsi Penyortiran Gelembung Versi*/ public static void bubblesort (int [] a) {boolean flag = true; ; ;
Kedua, dalam penyortiran yang menggelegak, pemindaian dapat ditukar tak terhitung jumlahnya, atau mungkin ada pertukaran data sekali atau beberapa. Informasi lokasi pertukaran data tidak diproses. Untuk memanfaatkan sepenuhnya informasi ini, dalam pemindaian global, Anda dapat melakukan penyortiran yang menggelegak lokal pada setiap data punggung -pesanan, yang disebut penyortiran gelembung lokal. Algoritma penyortiran yang menggelegak dan menggelegak memiliki kompleksitas waktu yang sama, dan di bawah kondisi urutan positif dan terbalik, jumlah kata kunci yang diperlukan untuk jumlah kata kunci dan gerakan persis sama. Karena jumlah pergerakan data penyortiran yang menggelegak dan penyortiran yang menggelegak selalu sama, jumlah kata kunci yang diperlukan untuk penyortiran yang menggelegak lokal seringkali kurang dari penyortiran yang menggelegak, yang berarti bahwa penyortiran yang menggelegak cenderung membandingkan rata -rata jumlah kali dalam Rata -rata. dari yang palsu. Untuk data yang dinonaktifkan N, ketika kita berada dalam penyortiran yang menggelegak, jika data K dan data reverse data K+1, maka data K+1 diurutkan ke depan, ia bergerak ke posisi yang tepat, yaitu, biarkan data K+1 sebelumnya Sesuaikan ke urutan positif. Karena metode menggelegak ini hanya menggelembung untuk data K+1 sebelumnya, kami menyebutnya -local menggelegak
Diharapkan bahwa artikel ini bermanfaat untuk desain program Java semua orang.