所謂冒泡演算法,就是第乙個跟第二個比,第二個跟第三個比。。。,首先從第乙個樹比到最後乙個數,如果第乙個比第二個大,那麼一二互換,如果二三比,二大,二三再互換,如此下去,最大的數就會排到最後面,然後就是再從第乙個數比到倒數第二個,重複上面的動作
現在我們看一下**
[22:54:16] vi bublle_1.c
[22:54:28] gcc bublle_1.c
[22:54:32] ./a.out12
3456
78910
[22:54:33] cat bublle_1.c
#include
int main()
; int len=sizeof(a)/sizeof(a[0]);
for(i=0;ifor(j=0;j<=len-i-1;j++)
}for(i=0;iprintf("%d ",a[i]);
printf("\n");
return0;}
[22:54:36]
現在我們來優化一下演算法。這裡我們使用乙個pos用來記錄最後乙個交換的位置,你試想一下,如果我們現在比到第五個數了,然後我們現在就用pos記住4,繼續再比下去,如果要使pos不變,是不是意味這後面的數都是前乙個比後乙個大(或者小),也就是說pos後面的序列已經有序了
[23:29:50] gcc bublle_2.c
[23:29:53] ./a.out12
3456
78910
[23:29:55] cat bublle_2.c
#include
int main()
; int len=sizeof(a)/sizeof(a[0]);
intpos=len;
for(i=0;i}
}for(i=0;iprintf("%d ",a[i]);
printf("\n");
return0;}
[23:29:59]
其實氣泡排序還可以再優化。我們可以同時排最大和最小值
[23:48:
42] gcc bublle_3.c
[23:48:
47] ./a.out12
3456
78910
[23:48:
49] cat bublle_3.c
#includeint main()
; int len=sizeof(a)/sizeof(a[0]),low,high;
low=0
; high=len-1
;while(low;iif(a[i]>a[i+1])
high--;//最大的值排好好,high-1
for(i=low;iif(a[i]>a[i+1])
low++;
}for(i=0
;iprintf("%d ",a[i]);
printf("\n");
return0;
}[23:48:
53]
冒泡演算法排序及其優化方案
一 什麼是氣泡排序?氣泡排序 bubble sort 是一種最為基礎的交換排序,相信學過c語言的,都接觸過這種排序演算法。這篇文章重點應該放在優化上面。二 氣泡排序的實現思想 將陣列裡面相鄰的元素兩兩比較,根據大小來交換元素位置,舉個栗子 這裡有乙個陣列array 4,6,5,8,9,3,2,1,7...
Python氣泡排序演算法及其優化
氣泡排序 所謂冒泡,就是將元素兩兩之間進行比較,誰大就往後移動,直到將最大的元素排到最後面,接著再迴圈一趟,從頭開始進行兩兩比較,而上一趟已經排好的那個元素就不用進行比較了。圖中排好序的元素標記為黃色柱子 氣泡排序 演示 上python 1 defbubble sort items 2for i i...
經典排序演算法 氣泡排序演算法及其優化(穩定)
氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的 如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排...