Aha! Algorithms - Bubble Sort

《啊哈!算法》第 1 章第 2 节,冒泡排序的 Swift 实现

问题

给学生成绩排序,打印排序后的名字(和成绩)

解决

依次比较相邻的两个学生分数的大小,把低分的放到后面,直到最后一个尚未归位的学生

struct Student {
    let name: String
    let score: Int
}

var array: [Student] = [Student(name: "huhu", score: 5),
                        Student(name: "haha", score: 3),
                        Student(name: "xixi", score: 5),
                        Student(name: "hehe", score: 2),
                        Student(name: "momo", score: 8)]

let count = array.count

//N 个对象排序,只需要循环 N-1 遍
for i in 0..<count-1 {
    //循环比较直到最后一个尚未归位的对象
    for j in 0..<count-1-i {
        if array[j].score < array[j+1].score {
            swap(&array[j], &array[j+1])
        }
    }
}

for item in array {
    print("\(item.name): \(item.score)")
}

冒泡排序的时间复杂度是 O(N2)

代码在 GitHub

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、 单项选择题(共71题) 对n个元素的序列进行冒泡排序时,最少的比较次数是( )。A. n ...
    貝影阅读 9,264评论 0 10
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,747评论 0 15
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,286评论 0 2
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 2,309评论 0 35
  • 幸福,是每个人都在奋力寻求的东西。但因为“幸福”这个概念很模糊,很多人不知道什么是幸福,怎么做才能获得幸福。我也是...
    眼睛歪了阅读 504评论 2 3