🧩
【Java】単純挿入ソート
この記事は、「新・明解Javaで学ぶアルゴリズムとデータ構造」を読んで学んだことを、個人的な備忘録目的でまとめています。
ただし、本を参考にして自分なりに構成やコードを変更しているためご注意ください。
アルゴリズムの詳細や解説は是非参考書をお手に取って読まれてください。
【リンク紹介】
・Javaで学ぶアルゴリズムとデータ構造
・これまで書いたシリーズ記事一覧
単純挿入ソート
package chap06;
import java.util.Scanner;
//--- 単純挿入ソート ---//
public class InsertionSort {
static void insertionSort(int[] a, int n) {
// 配列a[1]から並べ替えを開始
for (int i = 1; i < n; i++) {
int j;
int tmp = a[i];
// 開始位置a[i]から左に順に移動
// 左の要素a[j - 1]が右の要素tmpより小さいとき
for (j = i; j > 0 && a[j - 1] > tmp; j--) {
// 要素a[j]に要素a[j - 1]を入れる
// 要素が右に一つずつずれるイメージ
a[j] = a[j - 1];
}
// このjはfor文後なので、直前のjよりも値が1つ小さいことに注意
a[j] = tmp;
}
}
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.println("単純挿入ソート");
System.out.print("要素数:");
int nx = stdIn.nextInt();
int[] x = new int[nx];
for (int i = 0; i < nx; i++) {
System.out.print("x[" + i + "]:");
x[i] = stdIn.nextInt();
}
insertionSort(x, nx); // 配列xを単純挿入ソート
System.out.println("昇順にソートしました。");
for (int i = 0; i < nx; i++)
System.out.println("x[" + i + "]=" + x[i]);
}
}
学習内容まとめ
eclipse操作時に役立つショートカットまとめ
ご協力のほどよろしくお願いします。
Discussion