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