0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

シェルソートの実装(Java)

Last updated at Posted at 2025-04-10

※主に自分の備忘のための記事です。
 Javaによるシェルソートの実装例を以下に記載します。
 初学者が自力で書いたので拙いです。今後改善する予定です。

public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);
    
    //数字の数を設定
    int numberCount = Integer.parseInt(scanner.next());
    
    //未整列の数字一覧を受け取る
    int[] numbers = new int[numberCount];
    for(int i = 0; i < numberCount; i++) {
        numbers[i] = Integer.parseInt(scanner.next());
    }
    
    //シェルソートを行う際の間隔値を設定する・・・①
    int intervalCount = Integer.parseInt(scanner.next());
    int[] intervals = new int[intervalCount];
    for(int i = 0; i < intervalCount; i++) {
        intervals[i] = Integer.parseInt(scanner.next());
    }
    
    //①の間隔値に従いシェルソート実行
    for(int i = 0; i < intervalCount; i++) {
        for(int j = 0; j < intervals[i]; j++) {
            if(j + intervals[i] > numberCount - 1) {
                break;
            }
            
            for(int k = 0; k < (numberCount - j - 1) / intervals[i]; k++) {
                
                for(int l = k + 1; l - 1 >= 0; l--) {
                    int former = j + intervals[i] * (l - 1);
                    int later  = j + intervals[i] * l;
                    
                    if(numbers[former] > numbers[later]) {
                        int tempNum = numbers[former];
                        numbers[former] = numbers[later];
                        numbers[later] = tempNum;
                        
                    //↓ここ大事!既に並び替えが完了している場合にスキップを行っている
                    } else {
                        break;
                    }
                }
            }
        }
    }
    
    for(int num : numbers) {
        System.out.println(num);
    }
    
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?