1. 程式人生 > 其它 >使用 GitHub Actions 部署 Hexo 部落格

使用 GitHub Actions 部署 Hexo 部落格

一、什麼是氣泡排序法:

對於一組資料:3, 6 , 2 ,9 , 4, 7, 1, 0, 8, 5, 10,要將這些資料按照從小到大的順序進行排序,可以使用氣泡排序法。

首先:將第一個數字和第二個數字進行排序,如果第一個數字大於第二個數字,交換位置。

其次:將第二個數字和第三個數字進行排序,如果二大於三,則交換位置。

最後,將倒數第二個和倒數第一個進行排序,如果倒數第二個大於倒數第一個,則交換位置。

這樣操作之後,我就會把最大的數字排到最後面。

之後:我再從頭開始,這回把第二大的排到倒數第二個位置上......最後我只需要找到倒數第二小的數字,相應的也就確定了最小的數字,整個數列排序完畢。

通過上面的例子我們可以發現:排最大的進行一輪,排第二大進行一輪,最後排第二小的進行一輪,總共進行了10輪。

每一輪中都是不同的位置上面進行比較,因此可以分析出來,外層迴圈的是輪數,內層迴圈的是位置(下標)

二、通過一個程式來理解:

//氣泡排序的案例
#include	<stdio.h>

int	main(void)
{
	int names[11]={3,6,2,9,4,7,1,0,8,5,10};
	int dates[11];
	
	for (int i=0;i<11;i++)
	{
		dates[i]=names[i];
	}
	int out_i;
	int in_i;
	for (out_i=0;out_i<10;out_i++)//out_i是輪數
	{
		for (in_i=0;in_i<10-out_i;in_i++)	//in_i表示的是位置,in_i最後所抵達的位置和輪數有關,例:第一輪比較出最大的了,
		//第二輪就不用和最後位置進行比較,因此相應的位置也減少一位,即減去輪數。每次都從第一個開始,所以初始值是0 ,當
            //out_i=0時,in_i+1最大到最後一個,in_i也就是隻能到倒數第二個,也就是位置9,此時是<10-0。
		{
			if(dates[in_i]>dates[in_i+1])
			{
				int agent;
				agent=dates[in_i];
				dates[in_i]=dates[in_i+1];
				dates[in_i+1]=agent;
			}	
		} 
	}
	printf("print the changed array:\n");
	for (int n=0;n<11;n++)
	{
		printf("dates[%d]=%d\n",n,dates[n]);
	}
	printf("print the original array:\n");
	for(int n=0;n<11;n++)
	{
		printf("names[%d]=%d\n",n,names[n]);
	}
	 
	 return	0; 
 } 

列印結果如下:

print the changed array:
dates[0]=0
dates[1]=1
dates[2]=2
dates[3]=3
dates[4]=4
dates[5]=5
dates[6]=6
dates[7]=7
dates[8]=8
dates[9]=9
dates[10]=10
print the original array:
names[0]=3
names[1]=6
names[2]=2
names[3]=9
names[4]=4
names[5]=7
names[6]=1
names[7]=0
names[8]=8
names[9]=5
names[10]=10