次比較相鄰的兩個數,如果後乙個比前乙個小,換位置示例:
var arr =[3
,1,4
,6,5
,7,2
];function
bubblesort
(arr)}}
return arr;
}console.
log(
bubblesort
(arr)
);
外層for迴圈控制排序的次數。以上是最基本的沒有優化的氣泡排序版本。內層for迴圈控制比較的次數。
採用二分法,取出中間數,陣列每次和中間數比較,小的放到左邊,大的放到右邊
var arr =[3
,1,4
,6,5
,7,2
];function
quicksort
(arr)
let cindex = math.
floor
(arr.length /2)
;let c = arr.
splice
(cindex,1)
[0];
let left =
;let right =
;for
(let i =
0; i < arr.length; i++
)else
}return
quicksort
(left)
.concat
([c]
,quicksort
(right));
} console.
log(
'結果'
,quicksort
(arr)
);
小於"基準"的元素放入左邊的子集,大於基準的元素放入右邊的子集。最後,使用遞迴不斷重複這個過程,就可以得到排序後的陣列。
注意:基準可以不是中間數,任何乙個都可以。取中間值是為了方便理解。
演算法 學習筆記
1.輸入輸出演算法至少有乙個或多個輸出 2.有窮性 3.確定性 4.可行性 1.正確性a.演算法程式沒有語法錯誤 b.演算法程式對於合法的輸入資料能夠產生滿足要求的輸出結果 c.演算法程式對於非法的輸入資料能夠得出滿足規格說明的結果 d.演算法對於精心選擇的,甚至刁難的測試資料都有滿足要求的輸出結果...
演算法學習筆記
複雜度分析 1.只關注迴圈次數最多的一行 2.總複雜度等於量級最大 的複雜度 3.巢狀 的複雜度等於巢狀 內外複雜度的乘積 單鏈表結構和順序儲存結構的優缺點 儲存分配方式 時間效能 空間效能 單鏈表結構 用一組任意的儲存單元存放線性表元素 查詢 o n 插入和刪除 找到某位置的指標後,插入和刪除的時...
演算法學習筆記
影象分割是機器視覺後續處理的基礎,通過分割提取影象中的目標區域,方便後續進一步分析處理。分水嶺分割演算法 傳統的分水嶺演算法,是基於數學形態學的分割方法。其基本思想是,將2d影象視為3d地形 其中,畫素的座標 地形的位置,畫素的灰度 地形的高度 每乙個區域性極小值及其周圍區域稱為集水盆地,而集水盆地...