0Pricing
Swift Academy · 课时

排序、搜索与切片

学习 sorted()、sort()、firstIndex(of:)、prefix、suffix 和 ArraySlice

排序、搜索与切片 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。

欢迎

Swift 数组提供了丰富的排序、查找和切片算法。掌握这些算法可以减少手写循环,生成更简洁、更快速的代码。

排序方法对比

```swift let nums = [3,1,4,1,5,9] let sorted = nums.sorted() // new array, nums unchanged var mutable = [3,1,4] mutable.sort() // in-place sort ``` `sorted()` 可用于 `let` 数组;`sort()` 要求数组使用 `var` 声明。

自定义排序顺序

```swift let words = ["banana","apple","cherry"] let alpha = words.sorted() // ascending let rev = words.sorted(by: >) // descending let byLen = words.sorted { $0.count < $1.count } // by length ```

按条件查找首个和末个元素

```swift let nums = [4, 7, 2, 9, 1] let first = nums.first { $0 > 5 } // Optional(7) let last = nums.last { $0 > 5 } // Optional(9) ``` 这比手动编写循环更好,因为找到第一个匹配项后就会停止。

使用分区操作进行二分查找

Swift 标准库使用分区操作来高效地进行 O(n) 分区: ```swift var nums = [3, 1, 4, 1, 5, 9, 2] let pivotIdx = nums.partition { $0 >= 5 } // nums is now [...<5 values..., 5,9] and pivotIdx is the split point ```

数组切片:前缀与后缀

```swift let arr = [10,20,30,40,50] let first3 = arr.prefix(3) // ArraySlice [10,20,30] let last2 = arr.suffix(2) // ArraySlice [40,50] let mid = arr[1...3] // ArraySlice [20,30,40] ``` 切片是视图,与原数组共享存储空间。

将切片转换为数组

```swift let slice = arr.prefix(3) let copy = Array(slice) // independent [Int] copy ``` 如果需要在源数组的生命周期之外存储切片,请始终将其转换为 `Array`。

丢弃元素与从首尾丢弃

```swift let arr = [1,2,3,4,5] let d1 = arr.dropFirst() // [2,3,4,5] let d2 = arr.dropLast(2) // [1,2,3] let d3 = arr.drop { $0 < 3 } // [3,4,5] — drop while condition holds ```

最小值与最大值

```swift let scores = [88, 95, 70, 82] print(scores.min()!) // 70 print(scores.max()!) // 95 let minByLen = ["cat","elephant","ox"].min { $0.count < $1.count } // "ox" ```

包含检查与 allSatisfy

```swift let nums = [2, 4, 6, 8] print(nums.allSatisfy { $0 % 2 == 0 }) // true print(nums.contains { $0 > 10 }) // false ``` `allSatisfy` 和 `contains(where:)` 都会在能够确定结果时提前停止。

快速检查

哪种方法会以 `ArraySlice` 的形式返回数组的前 N 个元素?

回顾

要点总结: • `sorted()` → 返回新数组;`sort()` → 就地修改数组 • `first(where:)` / `last(where:)`——查找元素 • `prefix`、`suffix`、`[range]`——切片,不会复制 • `drop(while:)`、`dropFirst`、`dropLast`——从两端移除元素 • `min()`、`max()`、`allSatisfy`、`contains(where:)` 下一课:数组的映射、筛选与归并。

常见问题解答

「排序、搜索与切片」课时是免费的吗?

是的 — 「排序、搜索与切片」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。

「排序、搜索与切片」这节课中我会学到什么?

学习 sorted()、sort()、firstIndex(of:)、prefix、suffix 和 ArraySlice 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Swift Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「排序、搜索与切片」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Swift Academy 课中编写并运行代码吗?

能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 创建和修改数组
  2. 排序、搜索与切片
  3. 数组上的 Map、Filter 与 Reduce
  4. 二维数组与嵌套集合
← 返回 Swift Academy