🧩

【Java】単純挿入ソート

2024/11/29に公開

この記事は、「新・明解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操作時に役立つショートカットまとめ
https://qiita.com/toshi0383/items/1d2a990392998789062c

\bf{\textcolor{red}{記事が役に立った方は「いいね」を押していただけると、すごく喜びます \ 笑}}
ご協力のほどよろしくお願いします。

Discussion