排序演算法 冒泡演算法及其優化

2021-08-01 08:36:05 字數 1553 閱讀 7712

所謂冒泡演算法,就是第乙個跟第二個比,第二個跟第三個比。。。,首先從第乙個樹比到最後乙個數,如果第乙個比第二個大,那麼一二互換,如果二三比,二大,二三再互換,如此下去,最大的數就會排到最後面,然後就是再從第乙個數比到倒數第二個,重複上面的動作

現在我們看一下**

[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...

經典排序演算法 氣泡排序演算法及其優化(穩定)

氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的 如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排...