ผมลอกแปะมาแค่ส่วนเล็กๆส่วนเดียวตอนต้นของฟังค์ชันแสดงอัลกอริธึมของ quickselect นะครับ
def quickselect!(kth_lowest_value, left_index, right_index)
# If we reach a base case - that is, that the subarray has one cell,
# we know we've found the value we're looking for:
if right_index - left_index <= 0
return @array[left_index]
end
(ลอกมาแค่เงื่อนไขเดียว)
โดยรวมผมเข้าใจหมดว่า quickselect หลักการเรียง array ทำงานอย่างไรแต่ติดตรงอัลกอริธึมบรรทัดเดียวและสงสัยว่ามันทำงานยังไง ก็คือตรงนี้ครับ
if right_index - left_index <= 0
คอมเม้นต์อธิบายว่าเป็นการหาสมาชิกเมื่อเหลือเพียงตัวเดียวใน array ซึ่งอันนี้เข้าใจครับแต่งงว่า index ขวาลบ index ซ้ายกลายเป็น 0 หรือน้อยกว่าอย่างไรครับ นึกภาพไม่ออกจริงๆ
ขอคำอธิบายอัลกอริธึมบรรทัดนี้ครับ
def quickselect!(kth_lowest_value, left_index, right_index)
# If we reach a base case - that is, that the subarray has one cell,
# we know we've found the value we're looking for:
if right_index - left_index <= 0
return @array[left_index]
end
(ลอกมาแค่เงื่อนไขเดียว)
โดยรวมผมเข้าใจหมดว่า quickselect หลักการเรียง array ทำงานอย่างไรแต่ติดตรงอัลกอริธึมบรรทัดเดียวและสงสัยว่ามันทำงานยังไง ก็คือตรงนี้ครับ
if right_index - left_index <= 0
คอมเม้นต์อธิบายว่าเป็นการหาสมาชิกเมื่อเหลือเพียงตัวเดียวใน array ซึ่งอันนี้เข้าใจครับแต่งงว่า index ขวาลบ index ซ้ายกลายเป็น 0 หรือน้อยกว่าอย่างไรครับ นึกภาพไม่ออกจริงๆ