คำถามติดแท็ก time-complexity

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


30
ฉันจะตรวจสอบว่าอาร์เรย์มีค่าใน JavaScript ได้อย่างไร
วิธีที่รัดกุมและมีประสิทธิภาพมากที่สุดในการค้นหาว่าอาร์เรย์ JavaScript มีค่าคืออะไร? นี่เป็นวิธีเดียวที่ฉันรู้: function contains(a, obj) { for (var i = 0; i < a.length; i++) { if (a[i] === obj) { return true; } } return false; } มีวิธีที่ดีกว่าและรัดกุมกว่านี้หรือไม่ คำถามนี้เกี่ยวข้องกับคำถาม Stack Overflow มากที่สุดวิธีที่ดีที่สุดในการค้นหารายการในอาร์เรย์ JavaScript หรือไม่ indexOfซึ่งอยู่ในการหาวัตถุในอาร์เรย์ใช้

30
O (log n) หมายถึงอะไรอย่างแน่นอน
ฉันกำลังเรียนรู้เกี่ยวกับเวลาทำงานของ Big O Notation และเวลาที่ถูกตัดจำหน่าย ฉันเข้าใจความคิดของเวลาเชิงเส้นO (n)ซึ่งหมายความว่าขนาดของอินพุตมีผลต่อการเติบโตของอัลกอริทึมตามสัดส่วน ... และเช่นเดียวกันสำหรับตัวอย่างเช่นเวลากำลังสองO (n 2 )ฯลฯ อัลกอริธึมที่สิบเอ็ด เช่นเครื่องปั่นไฟที่มีการเปลี่ยนแปลงด้วยเวลาO (n!)ที่เติบโตโดยแฟกทอเรียล ตัวอย่างเช่นฟังก์ชันต่อไปนี้คือO (n)เนื่องจากอัลกอริทึมเติบโตตามสัดส่วนของอินพุตn : f(int n) { int i; for (i = 0; i < n; ++i) printf("%d", i); } ในทำนองเดียวกันหากมีการวนซ้ำซ้อนกันเวลาจะเป็น O (n 2 ) แต่O (log n)คืออะไรกันแน่? ยกตัวอย่างเช่นมันหมายความว่าอะไรที่จะบอกว่าความสูงของต้นไม้ไบนารีสมบูรณ์คือO (log n) ? ฉันรู้ (อาจไม่ได้อยู่ในรายละเอียดที่ดี) สิ่งที่ลอการิทึมคือในแง่ที่ว่า: log …

29
คุณจะสร้างโปรไฟล์สคริปต์ Python ได้อย่างไร?
โครงการออยเลอร์และการแข่งขันการเข้ารหัสอื่น ๆ มักจะมีเวลาสูงสุดในการรัน กับงูหลามบางครั้งแนวทางที่ค่อนข้างค่อนข้างแออัดเกินไป - __main__คือการเพิ่มรหัสระยะเวลาที่จะ วิธีที่ดีในการทำโพรไฟล์ว่าโปรแกรม Python ใช้เวลานานแค่ไหน?

9
วิธีค้นหาความซับซ้อนของเวลาของอัลกอริทึม
คำถาม จะค้นหาความซับซ้อนของเวลาในอัลกอริทึมได้อย่างไร ฉันทำอะไรก่อนโพสต์คำถามบน SO ฉันได้ผ่านนี้ , นี้และการเชื่อมโยงอื่น ๆ อีกมากมาย แต่ไม่มีที่ไหนที่ฉันสามารถหาคำอธิบายที่ชัดเจนและตรงไปตรงมาสำหรับวิธีการคำนวณความซับซ้อนของเวลา ฉันรู้อะไร ? พูดถึงโค้ดที่ง่ายเหมือนด้านล่าง: char h = 'y'; // This will be executed 1 time int abc = 0; // This will be executed 1 time พูดเพื่อวนเหมือนด้านล่าง: for (int i = 0; i < N; i++) { Console.Write('Hello World !'); } …

5
หากสตริงไม่เปลี่ยนรูปใน. NET แล้วเหตุใด Substring จึงใช้เวลา O (n)
เนื่องจากสตริงนั้นไม่เปลี่ยนแปลงใน. NET ฉันจึงสงสัยว่าทำไมพวกเขาจึงถูกออกแบบมาอย่างนั้น string.Substring()ใช้เวลา O ( substring.Length) แทนO(1)? เช่นอะไรคือการแลกเปลี่ยนถ้ามี?

9
อะไรคือความแตกต่างระหว่างΘ (n) และ O (n)
บางครั้งฉันเห็นΘ (n) ที่มีสัญลักษณ์แปลก ๆ with มีบางอย่างอยู่ตรงกลางและบางครั้งก็แค่ O (n) มันเป็นความขี้เกียจในการพิมพ์เพราะไม่มีใครรู้วิธีพิมพ์สัญลักษณ์นี้หรือว่ามันมีความแตกต่างกันบ้าง?

12
ความซับซ้อนในการคำนวณของลำดับฟีโบนักชี
ฉันเข้าใจสัญกรณ์ Big-O แต่ฉันไม่รู้วิธีคำนวณสำหรับฟังก์ชั่นมากมาย โดยเฉพาะฉันได้พยายามหาความซับซ้อนในการคำนวณของลำดับ Fibonacci รุ่นไร้เดียงสา: int Fibonacci(int n) { if (n <= 1) return n; else return Fibonacci(n - 1) + Fibonacci(n - 2); } ความซับซ้อนในการคำนวณของลำดับฟีโบนักชีคืออะไรและคำนวณอย่างไร?


22
มีกรณีใดบ้างที่คุณต้องการอัลกอริธึมความซับซ้อนของเวลาขนาดใหญ่ O ที่สูงกว่าตัวล่าง
มีกรณีใดบ้างที่คุณต้องการO(log n)ความซับซ้อนของO(1)เวลากับความซับซ้อนของเวลา? หรือO(n)เพื่อO(log n)? คุณมีตัวอย่างหรือไม่?

5
2 ^ n และ n * 2 ^ n มีความซับซ้อนในเวลาเดียวกันหรือไม่
ทรัพยากรที่ฉันพบว่ามีความซับซ้อนในเวลาไม่ชัดเจนเกี่ยวกับเวลาที่จะไม่สนใจคำศัพท์ในสมการความซับซ้อนของเวลาโดยเฉพาะกับตัวอย่างที่ไม่ใช่พหุนาม เห็นได้ชัดสำหรับฉันที่ให้บางสิ่งในรูปแบบ n 2 + n + 1 คำสองคำสุดท้ายไม่มีนัยสำคัญ โดยเฉพาะเมื่อได้รับสองหมวดหมู่คือ 2 nและ n * (2 n ) เป็นลำดับที่สองในลำดับเดียวกันเป็นลำดับแรกหรือไม่ การคูณ n เพิ่มเติมนั้นมีความหมายหรือไม่? ทรัพยากรมักจะบอกว่า x nอยู่ในรูปแบบเลขชี้กำลังและเติบโตเร็วกว่ามาก ... จากนั้นไปต่อ ฉันเข้าใจได้ว่าทำไมมันไม่ตั้งแต่ 2 nจะแซงหน้า n อย่างมาก แต่เนื่องจากพวกมันไม่ได้ถูกรวมเข้าด้วยกันมันจะมีความสำคัญอย่างมากเมื่อเปรียบเทียบสมการทั้งสองในความเป็นจริงความแตกต่างระหว่างพวกเขาจะเป็นปัจจัยของ n เสมอ ซึ่งดูเหมือนว่าสำคัญที่จะพูดน้อย

15
Java hashmap เป็นจริง ๆ O (1) หรือไม่
ฉันเคยเห็นการอ้างสิทธิ์ที่น่าสนใจเกี่ยวกับแฮชแมพของ Java และO(1)เวลาค้นหาของพวกเขาอีกครั้ง บางคนสามารถอธิบายได้ว่าทำไมถึงเป็นเช่นนั้น หากแฮชแมพเหล่านี้แตกต่างจากอัลกอริธึมการแฮชที่ฉันซื้อขึ้นมาอย่างมากมายจะต้องมีชุดข้อมูลที่มีการชนกันอยู่เสมอ ซึ่งในกรณีนี้การค้นหาจะมากกว่าO(n)O(1) บางคนสามารถอธิบายได้ว่าพวกเขาเป็น O (1) และถ้าเป็นเช่นนั้นพวกเขาบรรลุสิ่งนี้ได้อย่างไร

14
วิธีการคำนวณความซับซ้อนของการค้นหาแบบไบนารี
ฉันได้ยินบางคนบอกว่าเนื่องจากการค้นหาแบบไบนารีจะลดการป้อนข้อมูลลงในการค้นหาจึงเป็นอัลกอริธึม log (n) เนื่องจากฉันไม่ได้มาจากภูมิหลังทางคณิตศาสตร์ฉันจึงไม่สามารถเกี่ยวข้องกับมันได้ บางคนสามารถอธิบายรายละเอียดเพิ่มเติมได้หรือไม่ มันต้องทำอะไรกับซีรี่ส์ลอการิทึมหรือไม่?

8
เหตุใดความซับซ้อนของเวลาของทั้ง DFS และ BFS O (V + E)
อัลกอริทึมพื้นฐานสำหรับ BFS: set start vertex to visited load it into queue while queue not empty for each edge incident to vertex if its not visited load into queue mark vertex ดังนั้นฉันคิดว่าความซับซ้อนของเวลาจะเป็น: v1 + (incident edges) + v2 + (incident edges) + .... + vn + (incident edges) vจุดยอด1ถึงอยู่ที่ไหนn ประการแรกสิ่งที่ฉันพูดถูกต้องหรือไม่? ประการที่สองสิ่งนี้เป็นอย่างไรO(N …

19
กำไรจากการขายครั้งเดียวสูงสุด
สมมติว่าเราได้รับอาร์เรย์ของจำนวนเต็มnแทนราคาหุ้นในวันเดียว เราต้องการหาคู่(buyDay, sellDay)โดยbuyDay ≤ sellDayเช่นว่าถ้าเราซื้อหุ้นในbuyDayและขายในsellDayเราจะเพิ่มกำไรให้สูงสุด เห็นได้ชัดว่ามีโซลูชันO (n 2 )สำหรับอัลกอริทึมโดยการลองใช้คู่(buyDay, sellDay) ที่เป็นไปได้ทั้งหมดและใช้สิ่งที่ดีที่สุดจากทั้งหมด อย่างไรก็ตามมีอัลกอริทึมที่ดีกว่าหรืออาจเป็นอัลกอริทึมที่ทำงานในเวลาO (n) ?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.