Swift Academy · บทเรียน

การเรียงลำดับ การค้นหา และการแบ่งส่วน

sorted(), sort(), firstIndex(of:), prefix, suffix และ ArraySlice

บทเรียน 2 จาก 412 ขั้นตอน

การเรียงลำดับ การค้นหา และการแบ่งส่วน เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

ยินดีต้อนรับ

อาร์เรย์ของ Swift มาพร้อมชุดอัลกอริทึมมากมายสำหรับการเรียงลำดับ การค้นหา และการแบ่งส่วน การเรียนรู้สิ่งเหล่านี้ช่วยลดลูปที่ต้องเขียนเอง และทำให้ได้โค้ดที่สะอาดและทำงานเร็วขึ้น

sorted() เทียบกับ sort()

```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 ```

first(where:) และ last(where:)

```swift let nums = [4, 7, 2, 9, 1] let first = nums.first { $0 > 5 } // Optional(7) let last = nums.last { $0 > 5 } // Optional(9) ``` ดีกว่าการเขียนลูปเอง เพราะจะหยุดทันทีเมื่อพบค่าที่ตรงกันตัวแรก

การค้นหาแบบไบนารีด้วย partition(by:)

ไลบรารีมาตรฐานของ Swift ใช้ partition เพื่อแบ่งส่วนอย่างมีประสิทธิภาพในเวลา 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 ```

ส่วนย่อยของอาร์เรย์: prefix และ suffix

```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` เสมอ หากต้องการเก็บไว้หลังจากอายุการใช้งานของอาร์เรย์ต้นฉบับสิ้นสุดลง

drop และ dropFirst/dropLast

```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 ```

min() และ max()

```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" ```

contains และ allSatisfy

```swift let nums = [2, 4, 6, 8] print(nums.allSatisfy { $0 % 2 == 0 }) // true print(nums.contains { $0 > 10 }) // false ``` `allSatisfy` และ `contains(where:)` จะหยุดตรวจสอบทันทีเมื่อได้ผลลัพธ์ที่ชัดเจน

ตรวจสอบอย่างรวดเร็ว

เมทอดใดคืนสมาชิก N ตัวแรกของอาร์เรย์ในรูป `ArraySlice`

สรุป

ประเด็นสำคัญ: • `sorted()` → อาร์เรย์ใหม่ ส่วน `sort()` → เปลี่ยนแปลงอาร์เรย์เดิมโดยตรง • `first(where:)` / `last(where:)` — ใช้ค้นหาสมาชิก • `prefix`, `suffix`, `[range]` — ใช้แบ่งส่วนโดยไม่สร้างสำเนา • `drop(while:)`, `dropFirst`, `dropLast` — ใช้นำสมาชิกออกจากปลายอาร์เรย์ • `min()`, `max()`, `allSatisfy`, `contains(where:)` ถัดไป: map, filter และ reduce
เริ่มต้นได้ฟรี

เรียนรู้ Swift ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
122
บทเรียน
409

คำถามที่พบบ่อย

บทเรียน “การเรียงลำดับ การค้นหา และการแบ่งส่วน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเรียงลำดับ การค้นหา และการแบ่งส่วน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเรียงลำดับ การค้นหา และการแบ่งส่วน”

sorted(), sort(), firstIndex(of:), prefix, suffix และ ArraySlice คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การเรียงลำดับ การค้นหา และการแบ่งส่วน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างและเปลี่ยนแปลงอาร์เรย์
  2. การเรียงลำดับ การค้นหา และการแบ่งส่วน
  3. Map, Filter และ Reduce บนอาร์เรย์
  4. อาร์เรย์สองมิติและคอลเลกชันซ้อนกัน
← กลับไปที่ Swift Academy