【2015/03/25】冒泡排序的實現

    大家好,我又來了,我的蘿蔔青菜觀衆朋友們,你們好,嘿樹上的猴子,今天吃香蕉了嗎?反正看的人有100個都不會有一個留言,所以你們都是猴子。。。

    這幾天在學javascript,爲暑假實習做準備。還有之前面了CVTE的春招。我天真地以爲只要態度好人家就要了。結果發現數據結構和算法不去用真的是找不到工作的。呵呵。看懂了沒用啊。要會用。我一面的時候HR問我。會不會快速排序,我只把大概的方法說出來,具體實現那是上學期的事了,我早已經忘了。因爲現在在學的java中,暫時用到這些數據結構和算法還是比較少的。結果人家問我冒泡排序,我很激動地說我會實現。剛想講HR話鋒一轉問我時間複雜度,我摔啊!!!以前考試都是寫出來慢慢算的啊。反正面試也不是很好。我當時腦袋一片空白說忘了。呵呵。被failed了。現在要把以前學過的東西都實現一遍才行。恩。慢慢來。

     首先說一下冒泡排序的思想哦。就是全部相鄰元素進行比較。滿足條件就交換元素,不滿足就繼續用下一個元素比較。假設現在有數組a[10],要把最大的元素放進a[9],也就是最後。那第一次外層循環就是a[0]和a[1]比較,若a[1]>a[0],怎往下走,用a[1]和a[2]比較,如果a[2]<a[1],則a[2]和a[1]要交換位置。交換之後a[2]最大。以此類推,到最後內層循環完了之後,最後一個元素就最大了。此時外層循環繼續執行。等待外層循環執行完了之後,整個數據就有序了。下面貼代碼。大家看代碼比較好理解。

public class Te{
	
	//實現一個冒泡排序
	static void bubbleSort(int[] a ){
		//定義一個元素temp,交換變量時用
		int temp;
		for(int i=0;i<a.length -1;i++){
		
			for(int j=0;j<a.length-i-1;j++){
				
				//把最後元素往後移
				if(a[j]>a[j+1]){
					temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
				
			}
		}
		
	}
	public static void main(String[] arg){
		int[] a ={10,9,8,7,6,5,4,3,2,1};
		for(int i=0;i<a.length ;i++){
			System.out.print(a[i]+" ");
			
		}
		bubbleSort(a);
		System.out.println();
		for(int i=0;i<a.length ;i++){
			System.out.print(a[i]+" ");
			
		}
	}
	
}



<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">  從這段代碼可以看出,冒泡排序的時間複雜度是o(n^2);呵呵,真的一輩子也忘不了呢。</span>

   還有,上面這段代碼是可以改進的。就是程序如果某一次不用交換。就是已經有序,那麼程序就可以退出。這時候加個變量去控制它就可以了。
   大家自己想辦法改進哦。

    今晚就這樣。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章