Sortir Gelembung
Bubble sort, ketika saya melihat algoritma ini, saya ingat pepatah "desimal melayang, dan angka -angka besar tenggelam." Melalui perbandingan lapisan demi lapisan, desimal mengapung ke permukaan, dan angka -angka besar "menenggelamkan batu -batu di bagian bawah air." Ini mencapai efek penyortiran. Penyortiran gelembung adalah algoritma penyortiran sederhana. Ini berulang kali mengunjungi urutan yang harus diurutkan, membandingkan dua elemen sekaligus, dan menukarnya jika mereka salah. Pekerjaan mengunjungi urutan diulang sampai tidak ada pertukaran yang diperlukan, yaitu urutan telah diurutkan. Asal usul algoritma ini adalah karena semakin kecil elemen akan perlahan -lahan "melayang" ke bagian atas urutan melalui Exchange.
Pengoperasian algoritma penyortiran gelembung adalah sebagai berikut:
1. Bandingkan elemen yang berdekatan. Jika yang pertama lebih besar dari yang kedua, bertukar mereka dengan keduanya.
2. Lakukan pekerjaan yang sama untuk setiap pasangan elemen yang berdekatan, mulai dari pasangan pertama ke pasangan terakhir di akhir. Pada titik ini, elemen terakhir harus menjadi angka terbesar.
3. Ulangi langkah -langkah di atas untuk semua elemen kecuali yang terakhir.
4. Terus ulangi langkah -langkah di atas untuk lebih sedikit dan lebih sedikit elemen setiap kali sampai tidak ada pasangan angka yang perlu dibandingkan.
Diagram proses penyortiran gelembung:
Kode contoh
public class BubbleSort{ public static int[] bubbleSort(int[] array){ for(int i = 0;i < array.length;i++){ for(int j = 0; j < array.length-i-1;j++){ if(array[j] > array[j+1]){ int temp = array[j]; array [j] = array [j+1]; array [j+1] = temp; }} System.out.println ("th"+(i+1)+"penyortiran"); untuk (int k = 0; k <array.length; k ++) {System.out.print (array [k]+""); } System.out.println (); } return array; } / ** * @param args * / public static void main (string [] args) {int [] array = {7,3,9,5,6,8,1}; Bubblesort (array); }}Hasil Cetak:
1st order 3 7 5 6 8 1 9Sorting 2nd order 3 5 6 7 1 8 9Sorting 3 5 6 1 7 8 9Sorting 4th order 3 5 1 6 7 8 9Sorting 5th order 3 1 5 6 7 8 9Sorting 6th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 9Sorting 5th order 3 5 6 7 8 9Sorting 6th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 9Sorting 7th order 1 3 5 6 7 8 9Sorting 5th order 3 5 6 7 8 9Sorting 5th order 3 5 6 7 8 9Sorting 5th order 3 5 6 7 8 9Sorting 5th order 3 5 6 7 8 9SORTING 5TH ORDER 3 5 6 7 8 9 SORTING 5th Order 3 5 6 7 8 9SORTING 5TH ORDER 3 5 6 7 8 9SORTING 5TH ORDER 3 5 6 7 8 9SORTING 5TH ORDER 3 5 6 7 8 9SORTING 5TH ORDER 5TH PESAN 5 PESAN 5 PESAN 5TH ORDER 5TH ORDER 5TH ORDER 5TH 5th
Pencarian biner
Setelah menyortir pesanan, kita juga perlu menemukan data yang kita inginkan. Pencarian dikotomis adalah algoritma yang umum digunakan, waktu, dan dasar. Pencarian biner adalah mencari dan membandingkan dari posisi tengah dari data yang diurutkan, mirip dengan pasangan tengah tongkat kayu, sehingga juga disebut lipat dan setengah mencari. Ini adalah metode pencarian yang lebih efisien.
[Persyaratan Pencarian Biner]: 1. Struktur penyimpanan berurutan harus diadopsi. 2. Kunci harus diatur dengan cara yang tertib sesuai dengan ukuran kata kunci.
[Pro dan Kekurangan] Keuntungan dari metode pencarian setengah finish adalah bahwa ia memiliki lebih sedikit waktu perbandingan, kecepatan pencarian cepat, dan kinerja rata-rata yang baik; Kerugiannya adalah bahwa tabel yang akan dicari adalah tabel yang dipesan dan sulit untuk dimasukkan dan dihapus. Oleh karena itu, metode setengah pencarian cocok untuk daftar tertib yang tidak sering diubah dan sering ditemukan.
[Algoritma berpikir] Pertama, bandingkan kata kunci yang direkam di posisi tengah tabel dengan kata kunci pencarian. Jika keduanya sama, pencarian akan berhasil; Jika tidak, tabel akan dibagi menjadi dua sub-tabel dengan catatan posisi menengah. Jika kata kunci yang direkam di posisi tengah lebih besar dari kata kunci pencarian, cari lebih lanjut untuk sub-table sebelumnya, jika tidak, pencarian lebih lanjut untuk sub-table berikutnya.
Ulangi proses di atas sampai catatan yang memenuhi syarat ditemukan sehingga pencarian berhasil, atau sampai tabel anak tidak ada, pencarian tidak berhasil saat ini.
[Kompleksitas algoritma] dengan asumsi bahwa panjang array adalah N, kompleksitas algoritma adalah o(log(n)), kompleksitas waktu terburuk adalah O(n)。
Kode contoh
Paket com.somnus.array;/** * Metode pencarian biner * @Author compaq * */kelas publik BinarySearch {public static int binerSearch (int [] array, value int) {int low = 0; int high = array.length-1; int tengah = 0; while (rendah <= tinggi) {middle = (rendah+tinggi)/2; // 0 6 4 6 6 6 untuk (int i = 0; i <array.length; i ++) {System.out.print (array [i]+""); if (i == tengah) // 3 5 6 Cetak pembatas segera mengikuti titik tengah {system.out.print ("##"); }} System.out.println (); if (array [tengah] == nilai) {return middle; } if (nilai <array [tengah]) {tinggi = tengah - 1; } if (value> array [middle]) {low = middle + 1; }} return -1; } / ** * @param args * / public static void main (string [] args) {int [] array = {7,3,9,5,6,8,1}; int [] array1 = bubblesort.bubblesort (array); INT INDEX = BinarySearch (array1,1); System.out.println ("Lokal:"+Indeks); }}Hasil Cetak:
Pesanan pertama 3 7 5 6 8 1 9SORTING Urutan ke -2 3 5 6 7 1 8 9Sorting 3 5 6 1 7 8 9 SORTING 4th Order 3 5 1 6 7 8 8 9SORTING 5TH ORDER 3 1 5 6 7 8 9 SORTING 6 6 6 6 6 6 2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 2 6 2 6 2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 9 6
Analisis dan ringkasan
Dalam algoritma pencarian, dikotomi adalah yang tercepat, tetapi harus menjadi urutan yang dipesan. Ini adalah dasar dari algoritma, dan kita masih perlu berupaya keras untuk bereksperimen, meringkas, menyerap, dan berpegang teguh pada pembelajaran algoritma.