iOS程序员也要学点算法吧-简单排序之选择排序

接之前的文章 iOS程序员也要学点算法吧-简单排序之冒泡排序 , 我们发现冒泡排序的比较效率和交换效率都是O(N²) ,这一半不是我们想要的,这里引入了选择排序,选择排序讲算法的交换效率减少到了O(N),对于部分编程语言来说,往往交换耗时更大,所以在学习过程中未尝不是一个解决的办法。
选择排序的思想还是,利用双层循环,只不过每次循环中,我们用一个MinIndex变量 记录最小值的下标,在每次内存循环结束后,才发生交换,大大的减少了交换次数, 先来个演示吧

1.gif

在大数据量的时候交换次数显得尤为明显

1.gif

代码如图

Paste_Image.png
//:MARK - 2 选择排序

 func selectSort<T:Comparable>( aArr:[T]) -> [T] {
    var arr = aArr
    var minIndex = 0 // 记录每次遍历的最小值
    for outerIndex in 0..<arr.count {
        minIndex = outerIndex
        for innerIndex in (outerIndex + 1)..<arr.count {
            if arr[minIndex] > arr[innerIndex] {
                    minIndex = innerIndex // 判断最小值,充值选择的标记
             }
     //            在每次外层遍历之后再交换

if minIndex != outerIndex {
let t = arr[outerIndex]
arr[outerIndex] = arr[minIndex]
arr[minIndex] = t
}
}
}

          return arr
  }

    print(selectSort([9,8,7,6,5,4,3,2,1,0]))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Ba la la la ~ 读者朋友们,你们好啊,又到了冷锋时间,话不多说,发车! 1.冒泡排序(Bub...
    王饱饱阅读 1,884评论 0 7
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,295评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,813评论 0 15
  • “卑鄙是卑鄙者的通行证,高尚是高尚者的墓志铭”,这句话是诗人北岛一首诗中很著名的一句话。 卑鄙的人往往用猥琐的人生...
    8ab1b259aed0阅读 693评论 2 2
  • 妈妈一直跟我说我小时候是被拉扯大的,爸爸妈妈家里都有很多兄弟姐妹,不像现在的孩子爷爷奶奶外公外婆围着转。那时父母要...
    杨小小M阅读 222评论 0 0

友情链接更多精彩内容