什么是選擇排序勋眯?
基本思想:在一個(gè)排列中劃分為有序區(qū)和無(wú)序區(qū)婴梧,有序區(qū)在左邊,無(wú)序區(qū)在右邊客蹋。首先在無(wú)序區(qū)中找到最腥洹(大)元素,存放到有序區(qū)的起始位置讶坯,然后番电,再?gòu)氖S嗟臒o(wú)序區(qū)中繼續(xù)尋找最小(大)元素闽巩,然后放到有序區(qū)的末尾钧舌。以此類推,直到無(wú)序區(qū)沒(méi)有元素可排列
直觀表達(dá):就是在一個(gè)數(shù)組中遍歷查找涎跨,找到小的放在數(shù)組的左側(cè)洼冻,然后在剩余的元素中繼續(xù)查找,直到排序完成
算法描述
假設(shè)一個(gè)數(shù)組中有 2 個(gè)區(qū)域
5, 8, 2, 3, 1
有序區(qū)為空隅很,無(wú)序區(qū)為 5, 8, 2, 3, 1
-----------------------------------
首先:記錄數(shù)組的第一個(gè)值(5)撞牢,看看還有沒(méi)有比它更小的,如果有則記錄下來(lái)(1)叔营。直到數(shù)組第一遍遍歷完成屋彪。然后把最小的值(1)和無(wú)序區(qū)的第一個(gè)值(5)交換位置
結(jié)果:1, 8, 2, 3, 5
有序區(qū)為 1,無(wú)序區(qū)為 8, 2, 3, 5
-----------------------------------
然后進(jìn)行第二遍遍歷绒尊,在無(wú)序區(qū)中繼續(xù)查找最小值(2)畜挥,遍歷完畢后將最小值(2)與無(wú)序區(qū)第一值(8)交換位置
結(jié)果:1, 2, 8, 3, 5
有序區(qū)為 1, 2,無(wú)序區(qū)為 8, 3, 5
-----------------------------------
... 以此類推婴谱,直到無(wú)序區(qū)為空
<img src="https://noxussj.top:3000/21/1.gif"></img>
參考資料
值得收藏的十大經(jīng)典排序算法
文章的內(nèi)容/靈感都從下方內(nèi)容中借鑒
【持續(xù)維護(hù)/更新 500+前端面試題/筆記】https://github.com/noxussj/Interview-Questions/issues
【大數(shù)據(jù)可視化圖表插件】https://www.npmjs.com/package/ns-echarts
【利用 THREE.JS 實(shí)現(xiàn) 3D 城市建模(珠海市)】https://3d.noxussj.top/