การเรียงลำดับสไลซ์
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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ