|
閑來無聊,練練腦子,活動(dòng)一下筋骨。下面是基于C語言的優(yōu)化冒泡排序核心代碼,復(fù)制過去在C語言編譯平臺(tái)就能運(yùn)行?梢院芮宄斫饷芭菖判虻脑。- #include<stdio.h>
- void BubbleSort(int k[],int n) //函數(shù)里形參也可以是:int *k
- {
- int i,j,temp,count1=0,count2=0,flag;
- flag=1;
- for(i=0;i<n-1&&flag;i++)
- {
- for(j=n-1;j>i;j--)
- {
- count1++;
- flag=0;
- if(k[j-1]>k[j])
- {
- count2++;
-
- temp=k[j-1];
- k[j-1]=k[j];
- k[j]=temp;
- flag=1;
- }
-
- }
- }
- printf("總共進(jìn)行了%d次比較,進(jìn)行了%d次移動(dòng)" ,count1,count2);
- }
- int main(void)//比較,輸出最大值
- {
-
- // int m, a[10]={ 9,7,0,1,5,4,2,3,6,8 };
- // int m, a[10]={ 9,7,0,1,2,3,4,5,6,8 }; //那么排序的效率就大大增加了;
- int m, a[10]={ 10,0,7,2,34,6,6,8 ,9,0};//那么排序的效率就大大增加了;
- BubbleSort( a,10);
- printf("排序后的結(jié)果是:" );
- for(m=0;m<10;m++)
- {
- printf("%d\n\r" ,a[m]);
- }
- return 0; //結(jié)束主函數(shù)
- }
- /* 本函數(shù)關(guān)鍵要理解兩個(gè)for循環(huán)的作用;count1和count2,以及flag變量的作用。 */
復(fù)制代碼 代碼雖然很簡單,但是在實(shí)際應(yīng)用中卻很有用。比如,在圓點(diǎn)博士的四軸飛行器AD參數(shù)傳輸中就有類似本函數(shù)的數(shù)字濾波函數(shù);還有手機(jī)觸摸屏的觸摸坐標(biāo)校正也有用到數(shù)字濾波。冒泡排序核心代碼是經(jīng)過優(yōu)化處理了的,效率相對(duì)較高。
-----王衍
|
|