選擇排序(selection sort)是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
選擇排序的主要優點與資料移動有關。如果某個元素位於正確的最終位置上,則它不會被移動。選擇排序每次交換一對元素,它們當中至少有乙個將被移到其最終位置上,因此對n個元素的表進行排序總共進行至多n-1次交換。在所有的完全依靠交換去移動元素的排序方法中,選擇排序屬於非常好的一種。
時間複雜度
**演示:
**如下:
package main
import "fmt"
func selectsort(arr *int)
} (*arr)[minindex], (*arr)[i] = (*arr)[i], (*arr)[minindex] }}
func main()
selectsort(&arr)
fmt.println(arr)
}
資料結構之選擇排序
基本方法 從0索引開始,依次和後面元素比較,小的往前放,第一次完畢,最小值出現在了最小索引處,第二次找到第二小的值。具體是如何實現呢?第一輪是0索引上的資料依次跟後面各個索引上的資料進行比較,直到遇到乙個比它小的資料,這時候,這個小的資料就替換掉0索引上原來的資料,接著這個替換掉的資料繼續跟它原來的...
資料結構之選擇排序
選擇排序應該是最容易實現的一種排序方法,其原理很簡單,依舊分為兩塊資料,左邊選取資料與右邊的資料進行比較,取最小值,比較到最後的位置後交換資料,確保每一次比較中最小值都會調整到左邊並有序增加,實質上就是取最小值的函式,只不過外層包了乙個迴圈。void selectionsort int arr,in...
資料結構之排序 選擇類排序
三 選擇類排序 基本思想 從待排數列中選出最小的記錄,放到已排好序的元素之後,直至所有元素排序完畢!1.直接選擇排序 初始時 有序區為空,無序區即待排數列 第一趟,從無序區中選出最小的,與無序區的第乙個元素交換。新的有序區多乙個元素,新的無序區少乙個元素,有序區在無序區之前!第二趟,define s...