冒泡排序
冒泡排序想將于桶排序鹿榜,更為節(jié)省空間蹂匹,對(duì)于跳躍幅度比較大的數(shù)不必去申請(qǐng)?jiān)S多空間來(lái)進(jìn)行比較。
冒泡排序的基本思想是:每次比較兩個(gè)相鄰的元素犁钟,如果它們的順序錯(cuò)誤就把它們交換過(guò)來(lái)稳摄。
- 例子1:現(xiàn)在有 12稚字,35,99厦酬,100胆描,111;把這5個(gè)數(shù)進(jìn)行從大到小進(jìn)行比較仗阅,我們只需要兩兩進(jìn)行比較然后交換就可以了昌讲,簡(jiǎn)單說(shuō)就是12和35比較誰(shuí)大,很明顯35大减噪,交換它們的位置短绸,現(xiàn)在就變成了35,12筹裕,99醋闭,100,111了朝卒,然后12再和99進(jìn)行比較证逻,99比12大,交換后變成35抗斤,99囚企,12,100瑞眼,111龙宏,然后按照剛才方法繼續(xù)比較下去,再經(jīng)過(guò)兩次比較后就變成了35负拟,99烦衣,100歹河,111掩浙,12,現(xiàn)在12到最后了秸歧,注意現(xiàn)在只是移動(dòng)了12的位置還有4個(gè)數(shù)沒有進(jìn)行交換厨姚,我們還有再?gòu)念^進(jìn)行再比較再交換,再進(jìn)行n次比較交換后(偷懶不去計(jì)算具體多少次了)键菱,這個(gè)5個(gè)數(shù)現(xiàn)在變成這樣了111谬墙,100今布,99,35拭抬,12部默;而這種交換像不像是“翻滾”,這就是"冒泡排序"造虎。
- 代碼示例:
int main()
{
int a[5], i, j, t;
for(i = 0; i < 5; i++)
scanf("%d",&a[i]);
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5-i; j++)
{
if(a[j] < a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
for(i = 0; i < 5; i++)
printf("%d\n",a[i]);
}
/*輸入 12 35 99 100 111
* 輸出結(jié)果 111 100 99 35 12
*/