ソートされていない要素から取り出した要素を挿入して比較し
ソートしていく方法です。
最初は、インデックス0をソート済みとして挿入・比較を行います。
public class Demo {
public static void main(String[] args) {
int[] num = { 5, 4, 6, 3, 7, 9 };
sort(num);
for(int s : num) {
System.out.print(s + " ");
}
}
public static void sort(int[] data) {
for(int i = 1; i < data.length; i++) { //要素の取出し
int tmp = data[i];
int j = i;
while(0 < j && tmp < data[j - 1]) { //挿入部分の探索
data[j] = data[j - 1];
j--;
}
data[j] = tmp;
}
}
}
========== 実行結果 ==========
3 4 5 6 7 9
==============================
forのiが1から始まっているのは
インデックス0をソート済みとしているからです。
また、ソート済みの部分が確定とは限りません。
「int j = i;」にすることでiとjが連動するようになります。
iがインクリメントされて2になれば、jも2といった感じで。
whileではなくてforにするなら
初期値のところを「for(int j = i; 0 < j; j--)」みたいな感じに。
† 地球の末路!? †
【このカテゴリーの最新記事】
- no image
- no image