选择排序
访问量:493

一、简介

思路:每次从未排序序列中找到最小(大)元素,存放到排序序列的起始位置,以此类推,直到所有元素排序完毕。

假设需要对 [2 3 1 5 2 4]进行排序

第 1 次遍历 [1 3 2 5 2 4]

第 2 次遍历 [1 2 3 5 2 4]

第 3 次遍历 [1 2 2 5 3 4]

第 4 次遍历 [1 2 2 3 5 4]

第 5 次遍历 [1 2 2 3 4 5]

第 6 次遍历 [1 2 2 3 4 5]


go实现如下:

func SelectSort(data []int) []int {
   dataLen := len(data)
   if dataLen < 2 {
      return data
   }

   for i := 0; i < dataLen; i++ {
      flag := data[i]

      minIndex := i
      for j := i+1; j < dataLen; j ++ {
         if data[j] < data[i] {
            data[i] = data[j]
            minIndex = j
         }
      }

      data[minIndex] = flag

      fmt.Println("第", i+1, "次遍历", data)
   }

   return data
}