1. 程式人生 > 其它 >Java函式式介面

Java函式式介面

氣泡排序

文章目錄


引言

演算法重在思想,掌握其核心思想,然後才能熟練使用。

學校軍訓期間,軟體學院的軍訓

教官:列隊,然後迅速分為兩隊,男生一隊,女生一隊,按照身高從低到高排,但是需要保持原來的佇列,最多一下兩個人換位置,不然會出現混亂的場面。

學員:我應該站在哪兒?

教官:最後一個人,跟你前面的比一下,誰高?

最後一個學員說:報告教官,我前面的人高;

教官:換位置;

學員:是

學員:接下來呢:

教官:還要我教你?繼續跟你前面的人比呀;

然後一輪下來,前面站著最矮的人,

教官:給你們三分鐘,給我排好。

。。。

學員:難度這就是傳說中的氣泡排序?教官真厲害。


一、演算法思想

每次比較相鄰兩數,順序錯則交換兩數。

二、實現步驟

1.步驟流程

1.選中兩數

2.比較兩數,小則向前移動

3.直到與最後一個數比較

4.重複n-1趟


注:這裡一趟會比較8次

2.程式碼實現

程式碼如下(C):

#include<stdio.h>
int main()
{
	int a[100];
	int i,j,t,n; 
	scanf("%d",&n);
	
     for(i=1;i<=n;i++)//輸入n個數 
     {
     	scanf("%d",&a[i]); 
	 }
	 
	 for(i=1;i<=n-1;i++)//氣泡排序核心演算法;雙重迴圈 
	 {
	 	for(j=1;j<=n-i;j++)
	 	  {
	 	  	if(a[j]<a[j+1])
	 	  	{
	 	  		t=a[j];
	 	  		a[j]=a[j+1];
	 	  		a[j+1]=t;
			}
	 	  }
	 	  
	 }
	  for(i=1;i<=n;i++)
     {
     	printf("%d ",a[i]); 
	 }
	 getchar();//用於暫停程式,方便檢視結果 
	 return 0;
}

3.演算法分析

時間複雜度:O(N*N)

這個的時間複雜度是非常高的


總結

氣泡排序,核心就是雙重迴圈;