1. 程式人生 > >八大排序——氣泡排序

八大排序——氣泡排序

氣泡排序 

氣泡排序圖示:

這是一次氣泡排序的過程,詳細來說氣泡排序的過程為:

1.比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。

2.對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

3.針對所有的元素重複以上的步驟,除了最後一個。

4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

程式碼:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
#include<math.h>
#include<malloc.h>

void swap(int *a,int *b)
{
	int c;
	c=*b;
	*b=*a;
	*a=c;
}

void BubbleSort(int *s,int len)
{
	int i=0;
	int j=0;
	for(i=0;i<len-1;i++)
	{
		int flag=0;
		for(j=0;j<len-i-1;j++)
		{
			if(s[j]>s[j+1])
			{
				swap(&s[j],&s[j+1]);
				flag=1;
			}
		}
		if(flag==0)
		{
			return;
		}
	}

}

void Print(int *s,int len)
{
	int i;
	for(i=0;i<len;i++)
	{
		printf("%d ",s[i]);
	}
	printf("\n");
}

int main()
{
	int s[]={25,78,58,99,105,254,763,365,47,33,10,87};
	int len=sizeof(s)/sizeof(s[0]);
    BubbleSort(s,len);
 	Print(s,len);
    return 0;
}

執行結果: