/*C語言 氣泡排序法(二)*/
#include <stdio.h>
#include <stdlib.h>
#define num 10
void function1(int array[]),function2(int array[]);
int main()
{
int i[num] = { 1,2,8,7,6,5,4,3,9,10 };
printf("Before the change:\n");
function1(i);
function2(i);
printf("After the change:\n");
function1(i);
system("pause");
return 0;
}
void function1(int i[])
{
int j;
for (j = 0; j < num; j++)
printf(" %d", i[j]);
printf("\n");
}
void function2(int i[])
{
int j, k, m, n, o = 0,move=0;
for (n = 1; n < num && (!move); n++)
//(!move)的值就為1;代表true。
{
move = 1;
for (j = 0; j < num- n; j++)
{
if (i[j] > i[j + 1])
{
m = i[j + 1];
i[j + 1] = i[j];
i[j] = m;
move = 0;
//如果move沒進入迴圈歸零;則停止迴圈可減少計算次數。
}
o++;
}
}
printf("Total operation:%d\n", o);
//計算迴圈次數
}
//可以自行嘗試將move移除。
結果為:
留言列表