一般的な内部ソートアルゴリズムの交換ソート
2550 ワード
交換ソートとは、適切になるまで絶えず交換することです.選択ソートは、主に継続的な選択であり、交換されます.
スワップ・ソートには、次の2つがあります.
バブルソート:気泡のように、小さな(軽い)がずっと上に浮いています.最後の1つからずっと前に向かって比較して、それが小さいなら交換します.一番前までスクロールします(反対に、前が1回ループしている場合は2番目).
コードは次のとおりです.
(下がり、大きな後列)
クイックソート:0番目の数を中間数とし、最初の数の下付き文字と最後の数の下付き文字を中間に挟み、左が中間数より小さく、右が中間数より大きいか等しいようにします(表現能力が限られています).これで中間数が配列境界線となり,配列を2つに分け,左を1つ,右を1つに分け,それぞれ並べ替えを続ける.これで再帰する.
コード:
(小さい頃から)
スワップ・ソートには、次の2つがあります.
バブルソート:気泡のように、小さな(軽い)がずっと上に浮いています.最後の1つからずっと前に向かって比較して、それが小さいなら交換します.一番前までスクロールします(反対に、前が1回ループしている場合は2番目).
コードは次のとおりです.
(下がり、大きな後列)
package test.aglorith;
import java.util.Arrays;
public class BubbleSort {
public static void sort(int[] data) {
int data_len=data.length;
for(int i=0;i<data_len-1;i++){
for (int j = 1; j < data_len-i; j++) {
if (data[j-1]>data[j]) {
int temp=data[j-1];
data[j-1]=data[j];
data[j]=temp;
}
}
System.out.println(Arrays.toString(data));
}
}
public static void main(String[] args) {
int[] data=new int[]{10,9,8,7,6,5,4,3,2,1};
System.out.println(Arrays.toString(data));
sort(data);
}
}
クイックソート:0番目の数を中間数とし、最初の数の下付き文字と最後の数の下付き文字を中間に挟み、左が中間数より小さく、右が中間数より大きいか等しいようにします(表現能力が限られています).これで中間数が配列境界線となり,配列を2つに分け,左を1つ,右を1つに分け,それぞれ並べ替えを続ける.これで再帰する.
コード:
(小さい頃から)
package test.aglorith;
import java.util.Arrays;
public class QuickSort {
public static void sort(int[] data,int low,int hight) {
if (hight-low==1) {
if (data[hight]<data[low]) {
swap(data, low, hight);
}
}
if (hight-low>1) {
int left=low+1;
int right=hight;
int temp=data[low];
while (left<=right) {
while (left<hight) {
if (data[left]<temp) {
left++;
}else {
break;
}
}
while (right>low) {
if (data[right]>=temp) {
right--;
}else {
break;
}
}
if (left<right) {
swap(data, left, right);
left++;
right--;
}
}
swap(data, low, right);
System.out.println(Arrays.toString(data));
sort(data, low, right-1);
sort(data, right+1, hight);
}
}
public static void swap(int[] data,int i,int j) {
int temp=data[i];
data[i]=data[j];
data[j]=temp;
}
public static void main(String[] args) {
int[] data=new int[]{5,1,6,4,5,3,2,7};
System.out.println(Arrays.toString(data));
sort(data,0,data.length-1);
System.out.println(Arrays.toString(data));
}
}