1. 程式人生 > >插入排序演算法詳解

插入排序演算法詳解

插入排序:時間複雜度為O(n*n)。

原理:      

  1、假定待排序陣列部分有序,一般取陣列的第一個元素作為有序序列,其它的n-1個元素為無序序列

       2、每次取無序序列中一個元素e(複製儲存到臨時變數temp)與有序序列比較,找出元素e的在有序序列中的正確位置 i;

  3、將 有序序列中下標為i以及 下標大於i的元素依次向後移動一個位置(這個過程中元素e原來的值會被覆蓋);

       4、把temp中的值回填到位置i,完成一輪插入排序

 

 

	public static void insertSort(int[] array){//插入排序	
		for(int j=1;j<array.length;j++){//外迴圈遍歷無序序列		
			int temp = array[j];//第一步儲存待插入元素的數值
			int i=j-1;
			for(;i>=0 && temp < array[i];i--){//內迴圈遍歷有序序列
			    array[i+1] = array[i];
			}
			array[i+1] = temp;			
	  }	  
	}