前提・実現したいこと
flagを用いたバブルソートの流れを理解したいです。
1.関数bubbleSort()の中は、まず「bool flag = 1;」で、「for (int i = 0; flag; i++)」の「flag」は「1」になり、
2.次に「for (int j = N - 1; j >= i + 1; j--)」で「j >= i + 1;」の「i」は「0」、「1」が順番に入り、
3.「if (A[j] < A[j - 1])」でAの配列を後ろから比較して、後ろの数「A[j]」より、前の数「A[j - 1]」が小さければ、「swap(A[j], A[j - 1]」して、flag = 1になので、
4.「for (int i = 0; flag; i++)」の「flag」が「1」になるので、また内側のループに入り、比較を行う。
5.1.~4.を最大でもN回繰り返し、ソート終了。
この1.~5.の流れで理解はあっていますでしょうか?
自分の中ではflagはオン・オフとはネットで調べたのですが、いまいち流れが分かりません。
よろしくお願い致します。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
C++
1#include<iostream> 2using namespace std; 3 4int bubbleSort(int A[], int N) { 5 int sw = 0; 6 bool flag = true; 7 for (int i = 0; flag; i++) { 8 flag = false; 9 for (int j = N - 1; j >= i + 1; j--) { 10 if(A[j] < A[j - 1]) { 11 swap(A[j], A[j - 1]); 12 flag = true; 13 sw++; 14 } 15 } 16 } 17 return sw; 18} 19 20int main() { 21 int A[100], N, sw; 22 cin >> N; 23 for (int i = 0; i < N; i++) cin >> A[i]; 24 25 sw = bubbleSort(A, N); 26 27 for (int i = 0; i < N; i++) { 28 if (i) cout << " "; 29 cout << A[i]; 30 } 31 cout << endl; 32 cout << sw << endl; 33 34 return 0; 35}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。