寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

paizaラーニング: Javaによる「素朴なソートアルゴリズムメニュー」問題集

paizaラーニングのレベルアップ問題集「素朴なソートアルゴリズムメニュー」からの出典です。
paiza.jp
Javaによる「素朴なソートアルゴリズムメニュー」問題集と、それらの提出コードの解答例です。

僕が作成、提出したコードは、以下のとおりです。

・挿入ソート

/*
Javaによる「素朴なソートアルゴリズムメニュー」問題集
FINAL問題 挿入ソート
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] num = new int[n];
        for(int i = 0; i < n; i++){
            int x = sc.nextInt();
            num[i] = x;
        }
        int x;
        int j;
        for(int i = 1; i < n; i++){
        	x = num[i];
        	j = i;
        	while(j > 0 && num[j-1] > x) {
        		num[j] = num[j-1];
        		j--;
        	}
        	num[j] = x;
            for(int y = 0; y < n; y++){
                if(y < n-1){
                   System.out.print(num[y] + " ");
                }else{
                    System.out.println(num[y]);
                }
            }
        }
    }
}

・選択ソート

/*
Javaによる「素朴なソートアルゴリズムメニュー」問題集
FINAL問題 選択ソート
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] num = new int[n];
        for(int i = 0; i < n; i++){
            int x = sc.nextInt();
            num[i] = x;
        }
        for(int i = 0; i < n-1; i++){
        	int min = i;
        		for(int j =i+1; j < n; j++) {
        			if(num[j] < num[min]){
        				min = j;
        			}
        		}
    		int temp = num[i];
    		num[i] = num[min];
    		num[min] = temp;
    		for(int y = 0; y < n; y++) {
    			if(y < n-1) {
    				System.out.print(num[y] + " ");
    			}else {
    				System.out.println(num[y]);
    			}
    		}
        }        	
    }
}

バブルソート

/*
Javaによる「素朴なソートアルゴリズムメニュー」問題集
FINAL問題 バブルソート
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] num = new int[n];
        for(int i = 0; i < n; i++){
            int x = sc.nextInt();
            num[i] = x;
        }
        for(int i = 0; i < n-1; i++){
            for(int j = n-1; j > i; j--){
                if(num[j-1] > num[j]){
                    int temp = num[j];
                    num[j] = num[j-1];
                    num[j-1] = temp;
                }
            }
            for(int y = 0; y < n; y++){
    		    	if(y < n-1){
    		    		System.out.print(num[y] + " ");
    		    	}else{
    		    		System.out.println(num[y]);
    		        }
            }
        }
    }
}

paizaラーニングのレベルアップ問題集については、ユーザー同士で解答を教え合ったり、コードを公開したりするのは自由としています。
また授業や研修、教材などにも利用できるそうです。