C語言之冒泡排序算法

1、什麼是冒泡排序?
冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序算法。
它重複地走訪過要排序的數列,一次比較兩個元素,若是他們的順序錯誤就把他們交換過來。走訪數列
的工做是重複地進行直到沒有再須要交換,也就是說該數列已經排序完成。
這個算法的名字由來是由於越大的元素會經由交換慢慢「浮」到數列的頂端,故名。

2、冒泡排序的原理
   冒泡排序原理是臨近的數字兩兩進行比較,按照從小到大或者從大到小的順序進行交換,這樣一趟過
去後,最大或最小的數字被交換到了最後一位,而後再從頭開始進行兩兩比較交換,直到倒數第二位時結束,
其他相似看例子。
或者能夠這樣描述冒泡排序:
就是將第一個記錄的關鍵字和第二個記錄的關鍵字進行比較,
若是後面的比前面的小則交換,而後比較第二個和第三個,依次類推。
比完一趟,最大的那個已經放到了最後的位置,這樣就能夠對前面N-1個數再循環比較。 
穩定,時間複雜度 O(n^2)
(看到不少介紹冒泡排序的地方,包括教課書上我的感受不少描述的都不是很清楚,也多是我我的的理
解能力差一點,可是從網上搜到得這張圖看起來很清晰了,轉發一下但願能幫助到有的朋友)
算法

wKioL1hU8ViQIBs6AAE2jjZ35CY626.png-wh_50

3、冒泡排序程序代碼
ide

#include<stdio.h>spa

void Maopao(int *a,int n);
int main(void)
 {  int k;
 int a[10]={2,4,6,8,0,1,3,5,7,9};
 for(k=0;k<10;k++)
 {
 printf("%d ",a[k]);
}
printf("\n");
Maopao(a,10);
for(k=0;k<10;k++)
 {
 printf("%d ",a[k]);
}
return 0;
 } 
void Maopao(int *a,int n)
 {
    int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
 t=a[j];
 a[j]=a[j+1];
 a[j+1]=t;
   }
}
}

 }
blog

相關文章
相關標籤/搜索