相信大家都玩過撲克牌吧!沒玩過的同學得去學習一下哦!因爲插入排序就是模擬了插撲克牌的過程哦!
插入排序分爲三部:
- 第一步:找數據
- 第二步:比較大小
- 第三步:移動數據
思維導圖如下:
代碼如下:
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)