算法之插入排序

相信大家都玩過撲克牌吧!沒玩過的同學得去學習一下哦!因爲插入排序就是模擬了插撲克牌的過程哦!

插入排序分爲三部:

  • 第一步:找數據
  • 第二步:比較大小
  • 第三步:移動數據

思維導圖如下:
在這裏插入圖片描述
代碼如下:

void InsertQort(int *arr,int len)
{
	int tmp;
	int i;
	int j;
	for (i = 1; i <= len - 1; i++)  //從第二個數據開始
	{
		tmp = arr[i];
		
		for ( j = 0; j < i; j++) //找數據
		{
			if (tmp < arr[j])   //比較大小
			{
				break;
			}
		}

		for (int k = i - 1; k >= j; k--)  //移動數據
		{
			arr[k + 1] = arr[k];
		}
		arr[j] = tmp;
	}
}

測試用例:

int main()
{
	int arr[] = { 21, 2, 24, 43, 12, 9, 8, 212 };
	int len = sizeof(arr) / sizeof(arr[0]);

	InsertQort(arr,len);

	for (int i = 0; i <= len - 1; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	
	return 0;
}

測試結果:VS2013環境下測試

時間複雜度:O(n^2)
空間複雜度:O(1)

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