0Pricing
Go Academy · บทเรียน

การเรียงลำดับสไลซ์

sort.Slice และฟังก์ชันช่วย

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

เหตุใดการเรียงลำดับจึงสำคัญ

การเรียงลำดับจะจัดองค์ประกอบให้อยู่ในลำดับที่กำหนด แพ็กเกจ sort ของ Go จากไลบรารีมาตรฐานจัดการงานนี้ได้อย่างมีประสิทธิภาพ

โดยทั่วไปคุณแทบไม่ต้องเขียนอัลกอริทึมการเรียงลำดับขึ้นเองใน Go แต่จะเรียกใช้ตัวช่วยที่ทำงานกับสไลซ์แทน

นำเข้า sort

หากต้องการใช้แพ็กเกจนี้ ให้นำเข้าด้วย import "sort" แพ็กเกจนี้อยู่ในไลบรารีมาตรฐาน จึงไม่จำเป็นต้องดาวน์โหลดจากภายนอก

package main

import (
	"fmt"
	"sort"
)

func main() {
	fmt.Println("sort imported")
	_ = sort.IntsAreSorted([]int{1, 2, 3})
}

เรียงลำดับจำนวนเต็ม

sort.Ints จะเรียงสไลซ์ของ int จากน้อยไปมากโดยแก้ไขสไลซ์เดิมโดยตรง สไลซ์ต้นฉบับจะถูกเปลี่ยนแปลง

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{5, 2, 8, 1, 9}
	sort.Ints(nums)
	fmt.Println(nums)
}

เรียงลำดับสตริง

sort.Strings จะเรียงสไลซ์ของสตริงตามลำดับพจนานุกรม หรือตามลำดับตัวอักษรและไบต์

package main

import (
	"fmt"
	"sort"
)

func main() {
	words := []string{"banana", "apple", "cherry"}
	sort.Strings(words)
	fmt.Println(words)
}

เรียงลำดับจำนวนทศนิยม

sort.Float64s จะเรียงสไลซ์ของค่า float64 จากน้อยไปมาก

package main

import (
	"fmt"
	"sort"
)

func main() {
	values := []float64{3.2, 1.5, 2.8}
	sort.Float64s(values)
	fmt.Println(values)
}

sort.Slice

sort.Slice เรียงสไลซ์ใด ๆ โดยใช้ ฟังก์ชันตรวจว่าน้อยกว่า ที่คุณกำหนด ฟังก์ชันนี้รับดัชนีสองตัวคือ i และ j แล้วส่งกลับค่า true หากองค์ประกอบที่ i ควรอยู่ก่อนองค์ประกอบที่ j

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{5, 2, 8, 1}
	sort.Slice(nums, func(i, j int) bool {
		return nums[i] < nums[j]
	})
	fmt.Println(nums)
}

ลำดับจากมากไปน้อย

หากต้องการเรียงจากมากไปน้อย ให้กลับการเปรียบเทียบในฟังก์ชันตรวจว่าน้อยกว่า โดยใช้ nums[i] > nums[j]

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{5, 2, 8, 1}
	sort.Slice(nums, func(i, j int) bool {
		return nums[i] > nums[j]
	})
	fmt.Println(nums)
}

เรียงลำดับโครงสร้าง

sort.Slice มีประโยชน์อย่างมากเมื่อทำงานกับโครงสร้าง คุณเป็นผู้กำหนดว่าฟิลด์ใดจะใช้กำหนดลำดับ

package main

import (
	"fmt"
	"sort"
)

type Person struct {
	Name string
	Age  int
}

func main() {
	people := []Person{{"Bob", 30}, {"Alice", 25}}
	sort.Slice(people, func(i, j int) bool {
		return people[i].Age < people[j].Age
	})
	fmt.Println(people)
}

ตรวจสอบว่าเรียงลำดับแล้วหรือไม่

ตัวช่วยอย่าง sort.IntsAreSorted และ sort.SliceIsSorted จะส่งกลับค่า true หากสไลซ์เรียงลำดับอยู่แล้ว โดยไม่เปลี่ยนแปลงสไลซ์

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{1, 2, 3}
	fmt.Println(sort.IntsAreSorted(nums))
}

การแก้ไขในตำแหน่งเดิม

ฟังก์ชันทั้งหมดนี้เรียงลำดับ ในตำแหน่งเดิม โดยไม่ส่งกลับสไลซ์ใหม่ หลังจากเรียกใช้ sort.Ints(s) ตัวแปร s เองจะถูกจัดลำดับใหม่

package main

import (
	"fmt"
	"sort"
)

func main() {
	s := []int{3, 1, 2}
	sort.Ints(s)
	fmt.Println("s is now:", s)
}

เลือกตัวช่วยที่เหมาะสม

ใช้ตัวช่วยที่มีชนิดระบุไว้ (sort.Ints, sort.Strings, sort.Float64s) กับสไลซ์ทั่วไป หากต้องการกฎแบบกำหนดเองหรือเรียงโครงสร้าง ให้เลือกใช้ sort.Slice

  • sort.Ints - จำนวนเต็มจากน้อยไปมาก
  • sort.Slice - ใช้ได้กับทุกอย่างตามกฎของคุณ

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

ฟังก์ชันตรวจว่าน้อยกว่าใน sort.Slice ส่งกลับค่าอะไร

ทบทวน

คุณได้เรียนรู้การเรียงลำดับด้วยแพ็กเกจ sort ดังนี้:

  • sort.Ints, sort.Strings, sort.Float64s สำหรับสไลซ์ที่มีชนิดระบุไว้
  • sort.Slice กับฟังก์ชันตรวจว่าน้อยกว่าสำหรับกฎแบบกำหนดเองและโครงสร้าง
  • การเรียงลำดับทั้งหมดเกิดขึ้น ในตำแหน่งเดิม

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

บทเรียน “การเรียงลำดับสไลซ์” ฟรีหรือไม่

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

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

sort.Slice และฟังก์ชันช่วย คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

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

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

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

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

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

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

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

  1. การเรียงลำดับสไลซ์
  2. ลำดับการเรียงแบบกำหนดเอง
  3. การค้นหาข้อมูลที่เรียงแล้ว
  4. การเรียงลำดับแบบคงเสถียรภาพ
← กลับไปที่ Go Academy