Pilih Konsep Penyortiran
Penyortiran seleksi juga merupakan algoritma penyortiran pertukaran, yang memiliki kesamaan tertentu dengan penyortiran gelembung. Oleh karena itu, saya pribadi percaya bahwa memilih penyortiran dapat dianggap sebagai algoritma yang lebih baik untuk penyortiran gelembung. Idenya adalah sebagai berikut:
Misalkan array arr [] sekarang disortir, dan memiliki elemen N.
1 Bandingkan elemen pertama (dalam java, subskrip adalah 0) dengan elemen kedua. Jika yang pertama lebih besar dari yang terakhir, maka itu pasti bukan yang terkecil, tetapi kami tidak terburu -buru untuk bertukar seperti penyortiran gelembung. Kami dapat menetapkan variabel sementara A untuk menyimpan subskrip elemen terkecil saat ini. Kemudian kami terus membandingkan elemen terkecil dengan elemen ketiga. Jika masih bukan yang terkecil, maka kami memodifikasi nilai a. Dengan cara ini, sampai perbandingan dengan elemen terakhir selesai, dapat dipastikan bahwa A harus menjadi subskrip dari elemen terkecil.
2. Jika nilai A bukan 0 (nilai awal, yaitu, subskrip elemen pertama), bertukar dua elemen dengan subskrip a dan 0.
3. Ulangi proses di atas, dan mulai perbandingan dengan elemen dengan Subscript 1 kali ini, karena elemen terkecil telah ditempatkan pada posisi dengan subskrip 0.
4. Dengan cara ini, sampai hanya elemen terakhir yang tersisa, Anda dapat yakin bahwa elemen ini adalah yang terbesar.
5. Penyortiran selesai.
Jelas, algoritma ini juga membutuhkan putaran penyortiran N-1.
Perlu dicatat bahwa penjelasan di atas hanyalah cara untuk menemukan nilai minimum setiap kali. Bahkan, Anda juga dapat menemukan nilai maksimum setiap saat, tetapi Anda harus meletakkannya di ekor array setiap saat.
Kode Implementasi Java:
SectArray.java
paket ch02; kelas publik selectArray {// array private long [] arr; // ukuran data yang valid di array private int elem; // konstruktor default PublicArray () {arr = new Long [50]; } public selectArray (int max) {arr = new Long [max]; } // masukkan data public void insert (nilai panjang) {arr [elems] = value; elem ++; } // Tampilkan data public void display () {for (int i = 0; i <elems; i ++) {System.out.print (arr [i]+""); } System.out.println (); } // pilih Sortir public void selectSort () {int min = 0; long tmp = 0l; untuk (int i = 0; i <elems -1; i ++) {min = i; untuk (int j = i+1; j <elems; j ++) {if (arr [j] <arr [min]) {min = j; }} tmp = arr [i]; arr [i] = arr [min]; arr [min] = tmp; }}}Kode Uji:
Paket CH02; Public Class TestSelecTarRay {public static void main (string [] args) {selectArray sarr = new selectArray (); Sarr.insert (89); Sarr.insert (54); Sarr.insert (667); Sarr.insert (7); Sarr.insert (12); Sarr.insert (43); Sarr.insert (12); Sarr.Display (); Sarr.Selectsort (); Sarr.Display (); }} hasil: