コードを修正して、完全に機能するプログラムを作成しました。
#include <iostream>
int bubbleSort(std::string s) {
int num = 0;
for (int i = 0; i < s.length(); i++) {
for(int j = 0; j < s.length() - 1; j++) {
if(s[j] > s[j+1]) {
std::swap(s[j], s[j+1]);
num++;
std::cout << "num is " << num << " and string is " << s << "\n";
}
}
}
}
int main(void) {
bubbleSort("ZWQM");
}
を使用して 64 ビット Linux マシンでコンパイルしましたg++
。実行しました。結果:
num is 1 and string is WZQM
num is 2 and string is WQZM
num is 3 and string is WQMZ
num is 4 and string is QWMZ
num is 5 and string is QMWZ
num is 6 and string is MQWZ
6 回繰り返し、文字列を並べ替えます。この正確なプログラムがこの正確な出力を生成しないことを確認してください...そして、それが何をするか教えてください。
EDIT私は答えを得る方法を見つけました10
! 文字列に改行文字を追加しました。
bubbleSort("ZWQM\n");
結果は
num is 1 and string is WZQM
num is 2 and string is WQZM
num is 3 and string is WQMZ
num is 4 and string is WQM
Z
num is 5 and string is QWM
Z
num is 6 and string is QMW
Z
num is 7 and string is QM
WZ
num is 8 and string is MQ
WZ
num is 9 and string is M
QWZ
num is 10 and string is
MQWZ
キャリッジ リターンが最初の文字位置に「バブルダウン」するため、出力がどのように混乱しているかに注意してください。あなたが観察した違いは、文字列をプログラムに取り込む方法に関連していること、および Windows と Linux では行末の扱いが異なることを 99% 確信しています。