4つの基本ソート

2393 ワード

発泡法,挿入法,選択法,SHELLソート法を含むJAVAの4つの基本ソート.ここで、選択法は発泡法の改良であり、SHELLソート法は挿入法の改良である.根本的には2つの異なるソート方法にまとめることができます.すなわち、挿入法&発泡法です.
    一、挿入方法:
    ソート・セットを巡回し、1つの要素に達するたびに、この要素を前のすべての要素と比較し、ソート順に一致する要素を現在の範囲内で最も現れるべき位置に移動させます.交換は隣接する遍歴移動であり,二重サイクル制御が実現される.このソート法は地頭蛇のタイプに属して、私の地札の上で私はすべてのものを一定の順序で整頓して、1つ来て、1つ整頓します.処理コードは次のとおりです.
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; }
} 
}

    二、発泡法:
    比較的容易で、その内層サイクルは1回の遍歴を保証した後、集合の中で最小(大)要素がその正確な位置に現れ、次は次小要素である......この方法は集合分布の様々な状況で交換移動の回数が基本的に変わらず、最も遅いソートに属する.実装も二重サイクル制御である.このソート法は過江龍に属し、極端を見つけることだが、過賞龍にも長兄、二兄などがいるので、彼らは長兄が二兄を選んだだけだ.処理コードは次のとおりです.
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〈data[j]){
temp=data; 
data=data[j]; 
data[j]=temp; 
} 
}
} 

return data;

    三、選択方法:
    この方法は,集合記録最小(大)要素の位置を遍歴するだけで,一度遍歴した後,交換位置操作を行い,泡のようにしたが,比較中は交換操作を行わず,要素位置のみを記録した.1回のループでは、交換操作は1回のみ行われます.これは交換順序と比較して時間がかかる要素に適している.このソート法はバブル法よりも城府が深いので、極端なデータを覚えておき、データが終わったら処理します.バブル法のように自分より極端なものを処理するのではなく、選択法は自分の範囲内の最極端なデータだけを処理します.
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; 
data=data[lowIndex]; 
data[lowIndex]=temp; 
}
}

    四、Shellソート:
    これは、挿入ソートの改良であり、集合要素を一定の基数でグループに分けてソートし、各グループをローカル範囲で基本秩序に並べ、最後にすべての要素の挿入ソートを行うことを考慮しています.
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; 
}
}
}