Swift - 选择排序

demo下载地址

原理解析:

引自维基百科选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

问题描述:

把数组 [61,5,33,44,22] 进行从小到大进行排序

步骤如下:

  • 遍历数组,找到最小的元素,将其置于数组起始位置。
  • 从上次最小元素存放的后一个元素开始遍历至数组尾,将最小的元素置于开始处。
  • 重复上述过程,直到元素排序完毕。

代码:

/*
每一次从待排序的数据元素中选出最小(或最大)的一个元素,
存放在系列的起始位置,然后,在从剩余末排序元素中继续寻
找最小(或最大)的一个元素。然后放到已排序序列的末尾,依次
类推,直到全部待排序的数据元素排完。选择排序是最不稳定的排序

 */

func p_selectSort(array: inout [Int]) -> [Int] {
    guard array.count > 1 else {
        return array
    }
    
    for i in 0..<(array.count - 1) {
        var min = i // 有序区的最后一个位置
        
        for j in (i + 1)...(array.count - 1) {//注意边界,是遍历到最后一个
            
            if array[min] > array[j] {
                min = j;
            }
            
        }
        
        if i != min { //防止相同位置交换操作
            array.swapAt(min, i)
        }
    }
    return array
}

测试:

@objc func selectSort() {
        var list = [61,5,33,44,22]
        let result = p_selectSort(array: &list)
        print(result)
    }

结果

[5, 22, 33, 44, 61]
发布了128 篇原创文章 · 获赞 106 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/Z1591090/article/details/102667286