麪試系列3冒泡算法(優化)

麪試系列3冒泡算法(優化),第1張

麪試系列3冒泡算法(優化),第2張

冒泡是一個經典算法。
本段代碼增加了一些優化:
增加 b_exchange ,若本輪冒泡沒有交換數據,則表示排序成功,退出
增加 n_exchange, n_head ,記錄最近的交換位置,下輪冒泡衹要冒到該位置即可

#include
#include

int poposort(int *polist, int n)
{
int i, j;
int n_exchange;
if (null == polist)
return 0;
n_exchange = 0;
for (i = 0; i < n - 1; i )
{

int b_exchange;
int n_head;
b_exchange = 0;
n_head = n_exchange;
for (j = n - 1; j >= n_head 1; j--)
{

if (polist[j] < polist[j - 1])
{
int n_tmp_num;
n_tmp_num = polist[j];
polist[j] = polist[j - 1];
polist[j - 1] = n_tmp_num;
b_exchange = 1;
n_exchange = j;
}
}

if (0 == b_exchange)
return 1;
}
return 1;
}

int main()
{
// int polist[10] = {45,12,43,11,32,34,91,58,20,82};
int polist[10] =
{
0, 1, 2, 3, 4, 5, 6, 7, 9, 8
};
(void) poposort(polist, 10);
system('pause');
return 0;
}

位律師廻複

生活常識_百科知識_各類知識大全»麪試系列3冒泡算法(優化)

0條評論

    發表評論

    提供最優質的資源集郃

    立即查看了解詳情