คำใดที่ฉันสามารถใช้เพื่ออธิบายบางสิ่งบางอย่างที่มีความซับซ้อน O (N log N)
ตัวอย่างเช่น:
O (1): คงที่
O (บันทึก N): ลอการิทึม
O (N): เป็นเส้นตรง
O (N log N): ??????
O (N 2 ): กำลังสอง
O (N 3 ): ลูกบาศก์
คำใดที่ฉันสามารถใช้เพื่ออธิบายบางสิ่งบางอย่างที่มีความซับซ้อน O (N log N)
ตัวอย่างเช่น:
O (1): คงที่
O (บันทึก N): ลอการิทึม
O (N): เป็นเส้นตรง
O (N log N): ??????
O (N 2 ): กำลังสอง
O (N 3 ): ลูกบาศก์
คำตอบ:
"N log N" นั้นดีพอ ๆ กับที่คุณจะได้รับและควรจะเข้าใจโปรแกรมเมอร์มืออาชีพเป็นอย่างดี คุณไม่สามารถคาดหวังได้ว่าจะมีคำเดียวเพื่ออธิบายความซับซ้อนทุกระดับที่มีอยู่
linearithmicคำศัพท์แสงมีความหมายตรงนี้
ฉันไม่เชื่อว่าโปรแกรมเมอร์ทุกคนเข้าใจในระดับสากลดังนั้นหากคุณไม่ระวังก็จะปิดบังมากกว่าที่แจ้งไว้ โดยส่วนตัวแล้วฉันไม่ได้ใช้งานตามปกติและถ้าฉันทำแล้วฉันอาจจะกำหนดมันในการใช้งานครั้งแรกเช่น "บทความนี้พิจารณาเป็นO(N log N)ขั้นตอนวิธีเชิงเส้นตรง
บางครั้งเรียกว่า "loglinear" แม้ว่าคำนั้นหมายถึงบางสิ่งที่แตกต่าง ฉันจะใช้คำว่า "N log N" ตามคำแนะนำของ @ Philip
เนื่องจากปัจจัยlog nเติบโตช้าคำอธิบายเชิงคุณภาพของคำO(n log n)ว่า "เกือบเป็นเส้นตรง" คลาสO(n log n)อัลกอริทึมอาจเป็นที่รู้จักกันดีขึ้นอยู่กับผู้ชมของคุณตัวอย่างเช่นกรณีนี้คือการเรียงลำดับnรายการอย่างรวดเร็วโดยการเปรียบเทียบ
O(n · f(n))f(n) << nแต่การจับคู่นี้ยังมีสิ่งที่ชอบO(n · log log n)และO(n α(n))ตำแหน่งα(n)ของฟังก์ชัน Ackermann คืออะไร