我目前正在用C語言創建此程序,其目的是使用Bubble排序算法對包含多個元素的靜態數組進行排序。冒泡排序可能不是一種快速有效的算法,但我將其用於教育目的。確定數組是否完全排序
這個節目幾乎是我的作品想要的方式,它的排序,但我有以下問題:
- 我do-while循環不斷重複,即使數組本身完全排序。現在它正在循環,我希望它在整個數組正確排序時停止。
如何確定整個數組是否已排序,然後在完全排序時停止迭代?
這裏是我的代碼:
#include <stdio.h>
int main()
{
int list[] = {5,1,5,4,3,2,1};
int length = sizeof(list)/sizeof(int);
printf("Unsorted array\n");
printf("-----------------------------\n\n");
for (int i = 0; i < length; i++)
{
if (i < length - 1)
printf("%d, ", list[i]);
else
printf("%d", list[i]);
}
do
{
for (int i = 0; i < length - 1; i++)
{
if (list[i] > list[i + 1])
{
printf("\n* Moving %d and %d", list[i], list[i + 1]);
int temp = list[i + 1];
list[i + 1] = list[i];
list[i] = temp;
}
else
{
getchar();
}
getchar();
}
printf("-----------------------------\n");
for (int i = 0; i < length; i++)
{
if (i < length - 1)
printf("%d, ", list[i]);
else
printf("%d", list[i]);
}
} while (1);
printf("Goodbye!\n");
getchar();
return 0;
}
https://en.wikipedia.org/wiki/Bubble_sort說明如何知道何時終止。 –