寝癖頭の解法

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

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

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

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

・挿入ソート

/*
C++による「素朴なソートアルゴリズムメニュー」問題集
FINAL問題 挿入ソート
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
void insertion_sort(int a[],int n){
    int x,j;
    for(int i=0;i<n;i++){
        x=a[i];
        j=i-1;
        while((j>=0) && (a[j]>x)){
            a[j+1]=a[j];
            j--;
        }
        a[j+1]=x;
        if(i!=0){
            for(int i=0;i<n;i++){
                cout<<a[i];
                if(i!=n-1){
                    cout<<" ";
                }else{
                    cout<<endl;
                }
            }
        }
    }
}
int main(void){
    int n;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    insertion_sort(a,n);
    return 0;
}

・選択ソート

/*
C++による「素朴なソートアルゴリズムメニュー」問題集
FINAL問題 選択ソート
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
void selection_sort(int a[],int n){
    int min,minp,swap;
    for(int i=0;i<n-1;i++){
        min=a[i];
        minp=i;
        for(int j=i+1;j<n;j++){
            if(a[j]<min){
                min=a[j];
                minp=j;
            }
        }
        swap=a[i];
        a[i]=min;
        a[minp]=swap;
        for(int j=0;j<n;j++){
            cout<<a[j];
            if(j!=n-1){
                cout<<" ";
            }else{
                cout<<endl;
            }
        }
    }
}
int main(void){
    int n;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    selection_sort(a,n);
    return 0;
}

バブルソート

/*
C++による「素朴なソートアルゴリズムメニュー」問題集
FINAL問題 バブルソート
https://paiza.jp/works/mondai
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
void bubble_sort(int a[],int n){
    for(int i=0;i<n-1;i++){
        for(int j=n-1;j>i;j--){
            if(a[j-1]>a[j]){
                using std::swap;
                swap(a[j-1],a[j]);
            }
        }
        for(int j=0;j<n;j++){
            cout<<a[j];
            if(j!=n-1){
                cout<<" ";
            }else{
                cout<<endl;
            }
        }
    }
}
int main(void){
    int n;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    bubble_sort(a,n);
    return 0;
}

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