• Rumah  >  Artikel  >  hujung hadapan web  >  Contoh ringkasan empat kaedah pengisihan asas dalam kemahiran JAVA_javascript

    Contoh ringkasan empat kaedah pengisihan asas dalam kemahiran JAVA_javascript

    WBOY
    WBOYasal
    2016-05-16 15:49:13999semak imbas

    Contoh dalam artikel ini menerangkan empat kaedah pengisihan asas dalam JAVA. Kongsikan dengan semua orang untuk rujukan anda. Butirannya adalah seperti berikut:

    JAVA mempunyai empat kaedah pengisihan asas, termasuk kaedah buih, kaedah sisipan, kaedah pemilihan, dan kaedah pengisihan SHELL Kaedah pemilihan adalah penambahbaikan kaedah buih, dan kaedah pengisihan SHELL adalah penambahbaikan kaedah sisipan secara asasnya ia boleh diringkaskan Terdapat dua kaedah pengisihan yang berbeza: kaedah sisipan & kaedah gelembung

    1 Kaedah Sisipan:

    Melintasi koleksi yang diisih Setiap kali elemen dicapai, elemen ini dilalui dan dibandingkan dengan semua elemen sebelumnya, dan elemen yang sepadan dengan susunan pengisihan dialihkan satu demi satu ke kedudukan yang sepatutnya muncul dalam julat semasa. Pertukaran dilaksanakan dengan pergerakan traversal bersebelahan dan kawalan gelung berganda ini tergolong dalam jenis ular tempatan Pada kad tanah saya, saya perlu menyusun semuanya dalam urutan tertentu

    Kod pemprosesan adalah seperti berikut:

    public void sort(int[] data) {
    int temp; 
    for(int i=1; i〈data.length; i++){
    for(int j=i; (j〉0)&&(data[j]〉data[j-1]); j--){
    temp=date[j]; 
    data[j]=data[j-1]; 
    data[j-1]=temp; }
    } 
    }
    

    2 kaedah Buih:

    Gelung dalamannya memastikan bahawa selepas satu lintasan, elemen terkecil (terbesar) dalam set muncul dalam kedudukan yang betul, dan pada kali seterusnya ia adalah elemen terkecil seterusnya. . . Kaedah ini pada asasnya mempunyai bilangan pergerakan pertukaran yang sama dalam pelbagai keadaan pengedaran set, dan merupakan jenis yang paling perlahan. Pelaksanaannya juga adalah kawalan gelung berganda. Kaedah pengisihan ini tergolong dalam Dragon Crossing the River, yang bermaksud mencari yang melampau Namun, Dragon Crossing the River juga mempunyai abang sulung, abang kedua, dan lain-lain, jadi mereka hanya boleh memilih abang sulung dan abang kedua.

    Kod pemprosesan adalah seperti berikut:

    public static int [] maopao(int[] data) {
    int temp; 
    for(int i=0; i〈data.length-1; i++){
    for(int j=i+1; j〈data.length; j++){
    if(data[i]〈data[j]){
    temp=data[i]; 
    data[i]=data[j]; 
    data[j]=temp; 
    } 
    }
    }
    return data;
    
    

    Tiga kaedah pemilihan:

    Kaedah ini hanya merekodkan kedudukan elemen terkecil (besar) dengan merentasi set Selepas satu traversal, ia melakukan operasi swap kedudukan, yang serupa dengan menggelegak, semasa proses perbandingan, tiada operasi swap dilakukan , dan hanya kedudukan elemen direkodkan. Hanya satu operasi pertukaran dilakukan setiap lintasan. Pasangan ini lebih sesuai untuk elemen yang pesanan pertukarannya memakan masa. Kaedah pengisihan ini jauh lebih mendalam daripada kaedah gelembung Saya ingat data yang melampau dahulu, dan kemudian memprosesnya selepas melintasi data Tidak seperti kaedah gelembung, yang hanya perlu diproses jika ia lebih ekstrem daripada saya sendiri kaedah sahaja Mengendalikan data yang paling melampau dalam skopnya.

    public static void xuanze(int[] data) {
    int temp; 
    for (int i = 0; i 〈 data.length; i++) {
    int lowIndex = i; 
    for (int j = data.length - 1; j 〉 i; j--) {
    if (data[j] 〉 data[lowIndex]) {
    lowIndex = j; 
    }
    }
    temp=data[i]; 
    data[i]=data[lowIndex]; 
    data[lowIndex]=temp; 
    }
    }
    
    

    Empat pengisihan Shell:

    Ia adalah penambahbaikan pada isihan sisipan Ia mempertimbangkan untuk membahagikan elemen yang ditetapkan kepada kumpulan mengikut asas tertentu untuk pengisihan, supaya setiap kumpulan mula-mula disusun dalam susunan asas dalam skop setempat, dan akhirnya semua elemen diisih sekali. Isihan sisipan.

    public void sort(int[] data) {
    for(int i=data.length/2; i〉2; i/=2){
    for(int j=0; j〈i; j++){
    insertSort(data,j,i); 
    }
    }
    insertSort(data,0,1); 
    }
    private void insertSort(int[] data, int start, int inc) {
    int temp; 
    for(int i=start+inc; i〈data.length; i+=inc){
    for(int j=i; (j〉=inc)&&(data[j]〈data[j-inc]); j-=inc){
    temp=data[j]; 
    data[j]=data[j-inc]
    data[j-inc]=temp; 
    }
    }
    }
    
    
    Saya harap artikel ini akan membantu reka bentuk pengaturcaraan Java semua orang.

    Kenyataan:
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn