【軟考】演算法-冒泡
阿新 • • 發佈:2019-02-06
冒泡的本質是相鄰的兩個數兩兩交換,我這裡讓小數沉底大數上浮,排序出來的結果都在右邊右半部分是一個有序區
冒泡核心程式碼:
for (int i = 0; i < arr.Length - 1; i++)
{
#region 將大的數字移到陣列的arr.Length-1-i
for (int j = 0; j < arr.Length - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
#endregion
}
其實還是那個最簡單的例子:2個數裡找最大/小的怎麼找?引入第三變數!
關鍵在於條件怎麼寫。
所以插入排序的時間複雜度是
空間複雜度是指需要用多少個輔助變數,插入演算法用了一個臨時變數來交換位置,所以空間複雜度是O(1)
放個動圖: