という、昇順になっていたらソート終了するプログラムを付け加えました。
54-3,3-2,2-1,1-0とデータの大きさを比べていき昇順となっていればl=4となりfor (i = 0; l=4; i++) {が終了しソート完了という意味で付け加えました。
実行しても
ソート前 5 4 1 6 2
i:0) 6 と 2 を交換 --> 5 4 1 2 6
i:0) 4 と 1 を交換 --> 5 1 4 2 6
i:0) 5 と 1 を交換 --> 1 5 4 2 6
となります。解決方法を教えてください。よろしくお願いします。
#include <stdio.h>
void prtData(int data[], int n)
{
int i;
for (i = 0; i < n; i++) printf("%d ", data[i]);
printf("\n");
}
void bubbleSort(int dt[], int n)
{
int i, j, temp, k, l;
for (i = 0; l=4; i++) {
for (j = n - 1; j > i; j--) {
if (dt[j - 1] > dt[j]) {
printf("i:%d) %d と %d を交換", i, dt[j - 1], dt[j]);
temp = dt[j];
dt[j] = dt[j - 1];
dt[j - 1] = temp;
printf(" --> "); prtData(dt, n);
}//if
}//for2
l = 0;
for (k = n - 1; k = 1; k--) {
if (dt[k - 1] < dt[k]) {
l++;
}
}
printf("%d回目 比較交換終了時 ", i + 1); prtData(dt, n);
}//for1
}//全体
int main()
{
int data[] = { 5, 4, 1, 6, 2 };
printf("ソート前 "); prtData(data, 5);
bubbleSort(data, 5);
printf("ソート後 "); prtData(data, 5);
}