插入排序算法(4)

目錄

 

插入排序算法原理

插入排序算法的使用場景

插入排序算法的實現

插入排序算法的運行結果


  • 插入排序算法原理

       在插入排序中,需要將取出的數據與其左邊的數字進行比較。就跟前面講的步驟一樣,如果左邊的數字更小,就不需要繼續比較,本輪操作到此結束,自然也不需要交換數字的位置。然而,如果取出的數字比左邊已歸位的數字都要小,就必須不停地比較大小,交換數字,直到它到達整個序列的最左邊爲止。具體來說,就是第k輪需要比較k-1次。因此,在最糟糕的情況下,第2輪需要操作1次,第3輪操作2次……第n輪操作n-1次,所以時間複雜度和冒泡排序的一樣,都爲O(n2)。和前面講的排序算法一樣,輸入數據按從大到小的順序排列時就是最糟糕的情況。

 

  • 插入排序算法的使用場景

 

  • 插入排序算法的實現

//描述:插入排序算法
//參數:@piArray 待排序的數組數據
//		@iNum 數組個數
//返回:無
void InsertSort(int *piArray, int iNum)
{
	int i, j, tmp;
	char info[128];


	Printf("Sort before:", piArray, iNum);
	printf("\n\n");
	for (i=1; i<iNum; i++)
	{
		for (j=0; j<i; j++)
		{
			if (piArray[i] > piArray[j]) //尋找最小值
			{
				tmp = piArray[i];
				piArray[i] = piArray[j];
				piArray[j] = tmp;
			}
		}
		memset(info, 0, sizeof(info));
		sprintf(info, "\nOrder number %02d:", i);
		Printf(info, piArray, iNum);
	}


	printf("\n\n");
	Printf("Sort after:", piArray, iNum);
}

int main(int argc, char *argv[])
{
	int iArray[] ={10, 23, 65, -101, 999, 10000};

	InsertSort(iArray, sizeof(iArray)/sizeof(iArray[0]));

	system("pause");
	return 0;
}
  • 插入排序算法的運行結果

標題

 

 

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