คำถามติดแท็ก big-o

สัญกรณ์ Big-O ใช้เพื่อแสดงขอบเขตด้านบนที่ไม่แสดงอาการ อธิบายถึงเวลาที่เกี่ยวข้องหรือความซับซ้อนของพื้นที่ของอัลกอริทึม การวิเคราะห์ Big-O ให้การประมาณความยากของปัญหาอย่างคร่าวๆและง่ายขึ้น

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

26
มีอัลกอริทึมการเรียงลำดับที่แย่กว่า Bogosort (หรือที่รู้จักกันในชื่อว่า Monkey Sort) หรือไม่? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ เพื่อนร่วมงานของฉันพาฉันย้อนเวลากลับไปที่มหาวิทยาลัยของฉันด้วยการอภิปรายเกี่ยวกับขั้นตอนวิธีการเรียงลำดับในเช้านี้ เราระลึกถึงรายการโปรดของเราเช่น StupidSortO(n!)และคนของเราได้รับการแน่ใจว่าเราได้เห็นขั้นตอนวิธีการจัดเรียงที่เป็น นั่นทำให้ฉันเริ่มมองหาอัลกอริธึมการเรียงลำดับที่แย่ที่สุดที่ฉันหาได้ เราตั้งสมมติฐานว่าการเรียงลำดับแบบสุ่มสมบูรณ์จะค่อนข้างแย่ (เช่นการสุ่มองค์ประกอบ - เป็นไปตามลำดับหรือไม่ไม่สุ่มอีกครั้ง) และฉันมองไปรอบ ๆ และพบว่ามันถูกเรียกอย่างชัดเจนว่า BogoSort หรือ Monkey Sort หรือบางครั้งแค่เรียงแบบสุ่ม . Monkey Sort ดูเหมือนจะมีประสิทธิภาพเคสที่แย่ที่สุดO(∞)ซึ่งเป็นประสิทธิภาพเคสที่ดีที่สุดO(n)O(n·n!)และผลการดำเนินงานเฉลี่ยของ คืออะไรอย่างเป็นทางการในขณะนี้ได้รับการยอมรับขั้นตอนวิธีการเรียงลำดับการเรียงลำดับมีประสิทธิภาพการทำงานเฉลี่ยที่เลวร้ายที่สุด (และก่อนมี beeing เลวร้ายยิ่งกว่าO(n·n!))?
178 algorithm  sorting  big-o 

30
อัลกอริทึม O (nlogn) - ค้นหาสามเว้นระยะเท่ากันภายในไบนารีสตริง
ฉันมีคำถามนี้ในการทดสอบอัลกอริทึมเมื่อวานและฉันไม่สามารถหาคำตอบได้ มันทำให้ฉันบ้ามากเพราะมันมีค่าประมาณ 40 คะแนน ฉันคิดว่าส่วนใหญ่ของชั้นเรียนไม่สามารถแก้ไขได้อย่างถูกต้องเพราะฉันไม่ได้คิดวิธีแก้ปัญหาใน 24 ชั่วโมงที่ผ่านมา กำหนดสตริงไบนารี่ที่มีความยาว n โดยพลการให้หาสามตัวที่เว้นระยะเท่ากันภายในสตริงหากมีอยู่ เขียนอัลกอริทึมที่แก้ปัญหานี้ในเวลา O (n * log (n)) สตริงเช่นนี้มีสามอันที่ "เว้นระยะเท่ากัน": 11100000, 0100100100 แก้ไข: เป็นหมายเลขสุ่มดังนั้นจึงควรทำงานกับหมายเลขใดก็ได้ ตัวอย่างที่ฉันให้ไว้เพื่อแสดงคุณสมบัติ "เว้นระยะเท่ากัน" ดังนั้น 1001011 คือตัวเลขที่ถูกต้อง ด้วย 1, 4 และ 7 เป็นสิ่งที่เว้นระยะเท่ากัน
173 algorithm  big-o 

4
สรุป Big-O สำหรับการใช้งาน Java Collections Framework? [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันอาจกำลังสอน "Java crash-course" ในไม่ช้า ในขณะที่มันอาจจะปลอดภัยที่จะสมมติว่าสมาชิกผู้ชมจะได้รู้จักสัญลักษณ์ Big-O แต่ก็อาจไม่ปลอดภัยที่จะสมมติว่าพวกเขาจะรู้ว่าลำดับของการดำเนินการต่างๆในการใช้งานคอลเลกชันต่างๆคืออะไร ฉันอาจต้องใช้เวลาในการสร้างเมทริกซ์สรุปด้วยตนเอง แต่ถ้ามันมีอยู่แล้วในโดเมนสาธารณะที่ไหนสักแห่งฉันก็อยากจะนำมันกลับมาใช้ใหม่ (ด้วยเครดิตที่เหมาะสมแน่นอน) ใครมีพอยน์เตอร์บ้าง?
164 java  collections  big-o 

30
วิธีผสานสองอาร์เรย์ที่เรียงลำดับไว้ในอาร์เรย์ที่เรียงลำดับแล้ว [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ นี่เป็นคำถามของฉันในการสัมภาษณ์และนี่คือวิธีการแก้ปัญหาที่ฉันมีให้: public static int[] merge(int[] a, int[] b) { int[] answer = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) { if (a[i] < b[j]) { answer[k] = …

3
การรับประกันความซับซ้อนของคอนเทนเนอร์มาตรฐานคืออะไร?
เห็นได้ชัดว่า ;-) ภาชนะมาตรฐานมีรูปแบบการรับประกันบางส่วน การค้ำประกันประเภทใดและความแตกต่างระหว่างภาชนะประเภทต่างๆแตกต่างกันอย่างไร ทำงานจากหน้า SGI (เกี่ยวกับSTL ) ฉันมาด้วยสิ่งนี้: Container Types: ================ Container: Forward Container Reverse Container Random Access Container Sequence Front Insert Sequence Back Insert Sequence Associative Container Simple Associative Container Pair Associative Container Sorted Associative Container Multiple Associative Container Container Types mapped to Standard Containers ============================================= std::vector: Sequence …
160 c++  stl  containers  big-o 

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

16
“ O (1) access time” หมายถึงอะไร
ฉันเคยเห็นคำว่า "O (1) access time" นี้เคยหมายถึง "อย่างรวดเร็ว" แต่ฉันไม่เข้าใจความหมาย คำอื่น ๆ ที่ฉันเห็นในบริบทเดียวกันคือ "O (n) access time" ใครช่วยอธิบายง่ายๆว่าคำศัพท์เหล่านี้หมายถึงอะไร ดูสิ่งนี้ด้วย สัญกรณ์ Big O คืออะไร? ใช้มั้ย? Big-O สำหรับเด็กอายุแปดขวบ?
127 big-o 

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

15
เทคนิคนี้เป็นอัลกอริทึม O (1) สำหรับ“ Hello World” หรือไม่
นี่จะจัดเป็นอัลกอริทึม O (1) สำหรับ "Hello, World!" หรือไม่ ?? public class Hello1 { public static void Main() { DateTime TwentyYearsLater = new DateTime(2035,01,01); while ( DateTime.Now < TwentyYearsLater ) { System.Console.WriteLine("It's still not time to print the hello ..."); } System.Console.WriteLine("Hello, World!"); } } ฉันกำลังคิดว่าจะใช้ไฟล์ DateTime TwentyYearsLater = new DateTime(2035,01,01); while …
117 c#  .net  algorithm  big-o 

8
ตารางแฮชสามารถเป็น O (1) ได้หรือไม่?
ดูเหมือนจะเป็นความรู้ทั่วไปที่ตารางแฮชสามารถบรรลุ O (1) ได้ แต่นั่นไม่เคยมีเหตุผลสำหรับฉัน ใครช่วยอธิบายหน่อยได้ไหม นี่คือสองสถานการณ์ที่อยู่ในใจ: A. ค่าเป็น int ที่เล็กกว่าขนาดของตารางแฮช ดังนั้นค่าจึงเป็นแฮชของตัวเองดังนั้นจึงไม่มีตารางแฮช แต่ถ้ามีก็จะเป็น O (1) และยังไม่มีประสิทธิภาพ B. คุณต้องคำนวณแฮชของค่า ในสถานการณ์นี้ลำดับคือ O (n) สำหรับขนาดของข้อมูลที่กำลังค้นหา การค้นหาอาจเป็น O (1) หลังจากที่คุณทำงาน O (n) แต่ก็ยังคงออกมาสู่ O (n) ในสายตาของฉัน และเว้นแต่คุณจะมีแฮชที่สมบูรณ์แบบหรือตารางแฮชขนาดใหญ่อาจมีหลายรายการต่อถัง ดังนั้นมันจึงกลายเป็นการค้นหาเชิงเส้นเล็ก ๆ ในบางจุดอยู่ดี ฉันคิดว่าตารางแฮชนั้นยอดเยี่ยม แต่ฉันไม่ได้รับการกำหนด O (1) เว้นแต่จะเป็นเพียงทฤษฎีเท่านั้น บทความของ Wikipedia สำหรับตารางแฮชอ้างอิงเวลาในการค้นหาคงที่อย่างสม่ำเสมอและไม่สนใจค่าใช้จ่ายของฟังก์ชันแฮชโดยสิ้นเชิง นั่นเป็นมาตรการที่ยุติธรรมจริงหรือ? แก้ไข:เพื่อสรุปสิ่งที่ฉันเรียนรู้: เป็นความจริงในทางเทคนิคเนื่องจากฟังก์ชันแฮชไม่จำเป็นต้องใช้ข้อมูลทั้งหมดในคีย์และอาจเป็นเวลาที่คงที่และเนื่องจากตารางที่มีขนาดใหญ่เพียงพอสามารถทำให้การชนกันลงไปใกล้เวลาคงที่ มันเป็นความจริงในทางปฏิบัติเพราะเมื่อเวลาผ่านไปมันจะใช้งานได้ตราบเท่าที่ฟังก์ชันแฮชและขนาดตารางถูกเลือกเพื่อลดการชนกันแม้ว่านั่นมักจะหมายถึงการไม่ใช้ฟังก์ชันแฮชเวลาคงที่

6
อะไรจะทำให้อัลกอริทึมมีความซับซ้อน O (log n)
ความรู้เกี่ยวกับ big-O ของฉันมี จำกัด และเมื่อคำบันทึกปรากฏขึ้นในสมการมันก็ยิ่งทำให้ฉันผิดหวัง ใครช่วยอธิบายให้ฉันเข้าใจง่ายๆว่าO(log n)อัลกอริทึมคืออะไร? ลอการิทึมมาจากไหน? สิ่งนี้เกิดขึ้นโดยเฉพาะเมื่อฉันพยายามแก้คำถามฝึกหัดกลางภาค: ให้ X (1..n) และ Y (1..n) ประกอบด้วยรายการจำนวนเต็มสองรายการโดยแต่ละรายการเรียงลำดับแบบไม่ลดทอน ให้อัลกอริทึม - เวลา O (log n) เพื่อค้นหาค่ามัธยฐาน (หรือจำนวนเต็มน้อยที่สุดที่ n) ขององค์ประกอบที่รวมกัน 2n ทั้งหมด เช่น X = (4, 5, 7, 8, 9) และ Y = (3, 5, 8, 9, 10) จากนั้น 7 คือค่ามัธยฐานของรายการรวม (3, 4, 5, …

14
เหตุใดจึงแทรกกลางรายการที่เชื่อมโยง O (1)
ตามบทความ Wikipedia เกี่ยวกับรายการที่เชื่อมโยงการแทรกกลางรายการที่เชื่อมโยงถือเป็น O (1) ฉันคิดว่ามันจะเป็น O (n) คุณไม่จำเป็นต้องค้นหาโหนดที่อาจอยู่ใกล้ท้ายรายการหรือไม่? การวิเคราะห์นี้ไม่ได้อธิบายถึงการค้นหาการทำงานของโหนด (แม้ว่าจะจำเป็น) และเป็นเพียงแค่การแทรกเท่านั้นเอง? แก้ไข : รายการที่เชื่อมโยงมีข้อดีหลายประการเหนืออาร์เรย์ การแทรกองค์ประกอบที่จุดเฉพาะของรายการเป็นการดำเนินการที่มีเวลาคงที่ในขณะที่การแทรกในอาร์เรย์อาจต้องการการเคลื่อนย้ายองค์ประกอบครึ่งหนึ่งหรือมากกว่านั้น ข้อความข้างต้นทำให้ฉันเข้าใจผิดเล็กน้อย แก้ไขฉันถ้าฉันผิด แต่ฉันคิดว่าข้อสรุปควรเป็น: อาร์เรย์: การหาจุดแทรก / ลบ O (1) การดำเนินการแทรก / ลบ O (n) รายการที่เชื่อมโยง: การหาจุดแทรก / ลบ O (n) การดำเนินการแทรก / ลบ O (1) ฉันคิดว่าครั้งเดียวที่คุณจะไม่ต้องหาตำแหน่งคือถ้าคุณยังคงชี้ไปที่มัน (เช่นเดียวกับหัวและหางในบางกรณี) ดังนั้นเราจึงไม่สามารถพูดได้อย่างชัดเจนว่ารายการที่เชื่อมโยงเอาชนะอาร์เรย์สำหรับตัวเลือกการแทรก / ลบเสมอ
106 linked-list  big-o 

2
อะไรจะทำให้อัลกอริทึมมีความซับซ้อน O (log log n)
คำถามก่อนหน้านี้กล่าวถึงปัจจัยบางประการที่อาจทำให้อัลกอริทึมมีความซับซ้อน O (log n) อะไรจะทำให้อัลกอริทึมมีความซับซ้อนของเวลา O (log log n)?

2
อาร์เรย์ JavaScript ขนาดใหญ่
อาร์เรย์ใน JavaScript สามารถแก้ไขได้ง่ายมากโดยการเพิ่มและลบรายการ ค่อนข้างปกปิดข้อเท็จจริงที่ว่าอาร์เรย์ภาษาส่วนใหญ่มีขนาดคงที่และต้องการการดำเนินการที่ซับซ้อนในการปรับขนาด ดูเหมือนว่า JavaScript ทำให้ง่ายต่อการเขียนโค้ดอาร์เรย์ที่มีประสิทธิภาพต่ำ สิ่งนี้นำไปสู่คำถาม: ประสิทธิภาพใด (ในแง่ของความซับซ้อนของเวลา O ขนาดใหญ่) ที่ฉันสามารถคาดหวังได้จากการใช้งาน JavaScript เกี่ยวกับประสิทธิภาพของอาร์เรย์ ฉันคิดว่าการใช้งาน JavaScript ที่สมเหตุสมผลทั้งหมดมี O ขนาดใหญ่ดังต่อไปนี้ การเข้าถึง - O (1) ต่อท้าย - O (n) ล่วงหน้า - O (n) การแทรก - O (n) การลบ - O (n) การแลกเปลี่ยน - O (1) JavaScript ให้คุณเติมอาร์เรย์ล่วงหน้าตามขนาดที่กำหนดโดยใช้new Array(length)ไวยากรณ์ (คำถามโบนัส: การสร้างอาร์เรย์ในลักษณะนี้ O …

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