冒泡排序(Bubble Sort)
一種計算機科學領域的較簡單的排序演算法,它重復地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從從Z到A)錯誤就把他們交換過來,走訪元素的作業是重復地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成,
這個演算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二訊訓碳的氣泡最侄訓上浮到頂端一樣,故名“冒泡排序”,
基本思路
每次將相鄰的兩個數比較,將較小(或較大)的調到前面,重復這個步驟,最終將最大(或最小)的數排在最后,
演算法描述
1.比較相鄰兩個資料,如果第一個比第二個大,就交換兩個數
2.對每一個相鄰的數做同樣1的作業,這樣從開始一隊到結尾一隊在最后的數就是最大的數,
3.針對所有元素上面的操作,除了最后一個,
4.重復1~3步驟,知道順序完成,
演算法實作
(這里以從小到大排序為例)
# include<stdio.h>
int main(void)
{
int i, j, t, n;
int a[100];
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
scanf("%d",&a[i]); //遍歷陣列
for(i=0;i<n-1;i++) //進行n-1趟比較
{
for(j=0;j<n-1-i;j++)//每一趟進行n-1-i次比較
{
if(a[j]>a[j+1]) //相鄰兩個數比較
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
演算法分析
冒泡排序法是穩定的,因為當兩個數相等時,兩個數不用交換,不會改變兩個數的相對位置
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/59759.html
標籤:C
下一篇:選擇排序法(C語言)
