go語言實現排序 選擇排序

2021-09-12 04:19:59 字數 836 閱讀 4871

大家都知道我們一般不會用直接選擇排序,因為時間複雜度比較高,相信大家對直接插入排序都不陌生,就是每次確定乙個當前的最小值或者最大值,我也在這個基礎上進行了一點小改進,即每次都確定乙個最大值和最小值

**:

func selectsort(nums int,n int) int

} nums[min],nums[first]=swap(nums[min],nums[first])

if min!=end && max!=first

first++

end--

} return nums

}func swap(a,b int)(int ,int)

以前我是非常拒絕堆排序的,不是因為他不好,是因為我總得他太複雜,不好理解,總是怕用的時候出錯,事實也證明的確容易出錯,主要是因為他不僅要排序,還有有乙個函式不斷進行調整,但是這幾天好好看了之後,這個的確是乙個非常好的排序演算法,巧妙地利用二叉樹的這種特性,大頂堆(小頂堆)即每個父節點都比孩子節點大,其實也是每次調整後確定乙個最大值或最小值,但是他巧妙在,每次是拿出乙個分支進行比較,當資料很大的時候,比較次數會明顯減少,效率很高

**:

func swap(a,b int)(int ,int)

func adjustdown(nums int,n int,root int)

if nums[child]>nums[parent]else }}

func heapsort(nums int,n int) int

//排序

end:=n-1

for end>=0

return nums

}

演算法 選擇排序(go語言實現)

選擇排序與氣泡排序的時間複雜度相同。因為一直在選擇最小的數字,所以叫選擇排序 理論部分 1,將設陣列0號位為陣列最小值,將其定義為minnum 此時 minnum 5 2,遍歷陣列,將每一項和 minnum 對比,如果小於minnum,則將其與第一項調換位置 並重新賦值 minnum 變換為此時 m...

氣泡排序和選擇排序(Go語言實現)

氣泡排序和選擇排序是排序演算法中比較簡單和容易實現的演算法。氣泡排序的思想為 每一次排序過程,通過相鄰元素的交換,將當前沒有排好序中的最大 小 移到陣列的最右 左 端。而選擇排序的思想也很直觀 每一次排序過程,我們獲取當前沒有排好序中的最大 小 的元素和陣列最右 左 端的元素交換,迴圈這個過程即可實...

go語言實現排序 插入排序

相信大家對直接插入排序都不陌生,通俗來說就是每次取要排序陣列內的第i個數,在前i 1個數中,進行比較,找到正確的位置,插入即可。func insert nums int,n int int nums end 1 num return nums 分析 對於直接插入排序,平均時間複雜為o n 2 空間複...