冒泡排序法(C語言)


冒泡排序(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;
}

算法分析

冒泡排序法是穩定的,因為當兩個數相等時,兩個數不用交換,不會改變兩個數的相對位置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM