排序(1)-冒泡排序

1.基本概念

       根據在排序過程中待排序的記錄是否全部被放置在內存中,將排序分爲內部排序和外部排序。內部排序是在排序整個過程中,待排序的所有記錄全部 放置在內存中;外排序是由於排序的記錄個數太多,不能同時放置在內存中,整個排序過程需要 在內外存之間多次交換數據才能進行。


2.八大排序

        下面講述的八大排序,都是屬於內部排序。具體如下圖



3.冒泡排序

           首先來講講冒泡排序(Bubble Sort),這是思路最簡單的排序方式。他的基本思想是:重複地走訪要排序的數列,一次比較2相鄰的元素,如果它們的順序錯誤就把它們交換過來,直到沒有再需要交換的,這樣越大的元素經由交換會慢慢“浮出”。(這裏的排序一般都是從小到大的進行排序)

初:   49    38    65    97   76   13    27    49

1st:    38    49    65    76    13   27    49   97

2nd:   38    49    65    13    27   49   76    97

3rd:    38    49    13    27    49    65   76    97

4th:    38    13     27   49     49   65   76    97

5th:    13     27    38   49     49   65   76    97

每走訪一次數列,都會有一個相對最大的元素浮出。


4.時間複雜度

(1)最好的情況,即待排序的數列初狀態爲正序,則一起泡就可以完成排序,則進行了n-1次比較,沒有數據交換,時間複雜度爲O(n)

(2)最壞的情況,即待排序的數列初狀態爲逆序,此時需要比較n(n-1)/2次,並做等數量的數據交換,因此總的之間複雜度爲O(n^2)。

冒泡排序是一種穩定的排序方法。


5.java代碼的實現

public class bubble {
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] a = {57,68,59,52,72,28,96,33,24,19};
		//int []a = {57,68,59,52};
		System.out.println("冒泡排序的結果是:  ");
		bubbleSort(a);
		printscreen(a);
		
		
	}
	 private static void printscreen(int[] number) {
	        // TODO Auto-generated method stub
	              int size = number.length;
	               for (int  i = 0 ; i < size;i++)
	                   System.out.print(number[i]+ " ");
	               System.out.println();
		
	}
	//冒泡排序
	/**
	 * 
	 * @author Administrator
	 *冒泡排序
     *比較相鄰的元素,如果第一個比第二個大,就交換他們兩個
     *對每一對相鄰的元素做相同的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的
     *針對素有的元素重複以上步驟,除了最後一個
     *持續每次對越來越少的元素重複上面的操作,直到沒有一個數字需要比較
	 */
	public static void bubbleSort(int [] number)
	{   //nuberm.lengthnuberm.length放在外面,較少調用函數的次數,提高效率?
		int size = number.length;
		for(int i = 0;i < size -1;i++ )//每次比較最大的到了最後,下一次不用再參與比較
		{
			for(int j = 0;j < size - 1 - i;j++)//下面有j+1,所以上限要-1
			{
				if (number[j] > number[j+1])
				{
					int n = number[j];
					number[j] = number[j+1];
					number[j+1] = n;
				}
				
			}
		}
	}
	
	
	
	
	
}






      


     


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