###目的
隣り合うカードをくらべ、小さい順に並べていく.
また、入れ替えた回数を表示する。
例
53241→53214→53124→51324→15324→15234→12534→12354→12345
###入力
5(カードの枚数)
5 3 2 4 1(それぞれのカードの数)
###出力
8(入れ替えた回数)
1 2 3 4 5(入れ替えたあとのカードの順列)
###コード
C++
1#include <algorithm> 2#include <iostream> 3#include <stdio.h> 4#include <vector> 5 6using namespace std; 7int bubbleSort(vector<int> A, int N) 8{ 9 int flag = 1; 10 int count = 0; 11while (flag) { 12 flag = 0; 13 for (int j = N - 1;j > 0;j--) { 14 if (A.at(j) < A.at(j - 1)) { 15 swap(A.at(j), A.at(j - 1)); 16 flag = 1; 17 count++; 18 } 19 } 20} 21return count; 22} 23int main() { 24 int N; 25 scanf_s("%d",&N); 26 vector<int> A(N); 27 for (int i = 0;i < N;i++) { 28 scanf_s("%d", &A.at(i)); 29 } 30 int S = bubbleSort(A, N); 31 printf("%d", S); 32 cout << endl; 33 for (int i = 0;i < N;i++) { 34 if (i > 0)cout << " "; 35 printf("%d", A.at(i)); 36 } 37}
###問題
上のbubbleSort関数で順序を入れ替えたのに、それがmain関数に反映されません。
###参考
Visual studioを使用。
"アルゴリズムとデータ構造"をいう参考書の3,3の内容です。
初学者なのでできるだけ優しく教えてください。
回答1件
あなたの回答
tips
プレビュー