คำถามติดแท็ก algorithms

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

5
การค้นหาแอนนาแกรมที่น่าสนใจ
สมมติว่าและเป็นสองสตริงที่มีความยาวเท่ากัน anagrammingของสองสายคือการทำแผนที่ bijectiveเช่นว่าสำหรับแต่ละฉันb 1 b 2 … b na1a2…ana1a2…ana_1a_2\ldots a_nb1b2…bnb1b2…bnb_1b_2\ldots b_na i = b p ( i ) ip:[1…n]→[1…n]p:[1…n]→[1…n]p:[1\ldots n]\to[1\ldots n]ai=bp(i)ai=bp(i)a_i = b_{p(i)}iii อาจมีแอนนาแกรมมากกว่าหนึ่งรายการสำหรับคู่สายเดียวกัน ตัวอย่างเช่นถ้า `abcab` และเรามีและและอื่น ๆb = p 1 [ 1 , 2 , 3 , 4 , 5 ] → [ 4 , 5 , 1 , …

2
จำลองความน่าจะเป็น 1 จาก 2 ^ N โดยมีบิตสุ่มน้อยกว่า N
บอกว่าฉันต้องจำลองการกระจายแบบไม่ต่อเนื่องดังนี้ P(X=k)={12N,1−12N,if k=1if k=0P(X=k)={12N,if k=11−12N,if k=0 P(X = k) = \begin{cases} \frac{1}{2^N}, & \text{if $k = 1$} \\ 1 - \frac{1}{2^N}, & \text{if $k = 0$} \end{cases} วิธีที่ชัดเจนที่สุดคือการวาดบิตสุ่มและตรวจสอบว่าทั้งหมดนั้นเท่ากับ (หรือ ) อย่างไรก็ตามทฤษฎีสารสนเทศกล่าวNNN000111 S=−∑iPilogPi=−12Nlog12N−(1−12N)log(1−12N)=12Nlog2N+(1−12N)log2N2N−1→0S=−∑iPilog⁡Pi=−12Nlog⁡12N−(1−12N)log⁡(1−12N)=12Nlog⁡2N+(1−12N)log⁡2N2N−1→0 \begin{align} S & = - \sum_{i} P_i \log{P_i} \\ & = - \frac{1}{2^N} \log{\frac{1}{2^N}} - \left(1 - \frac{1}{2^N}\right) …

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

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

1
ตารางแฮชกับต้นไม้ไบนารี
เมื่อติดตั้งพจนานุกรม ('ฉันต้องการค้นหาข้อมูลลูกค้าตามรหัสลูกค้า') โครงสร้างข้อมูลทั่วไปที่ใช้คือตารางแฮชและแผนภูมิการค้นหาแบบไบนารี ฉันรู้ว่าอินสแตนซ์ที่ห้องสมุด C ++ STL ใช้พจนานุกรม (เรียกพวกเขาว่าแผนที่) โดยใช้แผนภูมิการค้นหาแบบทวิภาค (สมดุล) และกรอบงาน. NET ใช้ตารางแฮชภายใต้ประทุน ข้อดีและข้อเสียของโครงสร้างข้อมูลเหล่านี้คืออะไร มีตัวเลือกอื่นที่เหมาะสมในบางสถานการณ์หรือไม่? โปรดทราบว่าฉันไม่สนใจโดยเฉพาะอย่างยิ่งในกรณีที่ปุ่มมีโครงสร้างพื้นฐานที่แข็งแกร่งกล่าวว่าพวกเขาเป็นจำนวนเต็มทั้งหมดระหว่าง 1 ถึง n หรือบางสิ่งบางอย่าง

7
ความแตกต่างและความสัมพันธ์ระหว่างอัลกอริธึมแบบสุ่มและแบบไม่ จำกัด
ความแตกต่างและความสัมพันธ์ระหว่างอัลกอริธึมแบบสุ่มกับอัลกอริธึมแบบ nondeterministic คืออะไร จากวิกิพีเดีย ขั้นตอนวิธีการสุ่มแบบเป็นขั้นตอนวิธีการซึ่งมีพนักงานระดับของการสุ่มเป็นส่วนหนึ่งของการใช้เหตุผลของมัน อัลกอริทึมโดยทั่วไปจะใช้บิตสุ่มอย่างสม่ำเสมอในฐานะที่เป็นข้อมูลเสริมเพื่อเป็นแนวทางในการทำงานโดยหวังว่าจะบรรลุผลงานที่ดีใน "ค่าเฉลี่ยกรณี" เหนือตัวเลือกสุ่มบิตทั้งหมดที่เป็นไปได้ อย่างเป็นทางการประสิทธิภาพของอัลกอริทึมจะเป็นตัวแปรสุ่มที่กำหนดโดยบิตสุ่ม ดังนั้นเวลาทำงานหรือเอาต์พุต (หรือทั้งสองอย่าง) เป็นตัวแปรสุ่ม อัลกอริทึม nondeterministicเป็นอัลกอริทึมที่สามารถแสดงพฤติกรรมที่แตกต่างกันในการทำงานที่แตกต่างกันเมื่อเทียบกับขั้นตอนวิธีการที่กำหนด มีหลายวิธีที่อัลกอริทึมอาจทำงานแตกต่างจากการเรียกใช้เพื่อเรียกใช้ อัลกอริทึมพร้อมกันสามารถดำเนินการแตกต่างกันในการทำงานแตกต่างกันเนื่องจากสภาพการแข่งขัน ขั้นตอนวิธีการน่าจะเป็นพฤติกรรมที่ขึ้นอยู่กับเครื่องกำเนิดไฟฟ้าจำนวนสุ่ม อัลกอริทึมที่แก้ปัญหาในเวลาพหุนามแบบ nondeterministic สามารถเรียกใช้ในเวลาพหุนามหรือเวลาชี้แจงขึ้นอยู่กับตัวเลือกที่ทำในระหว่างการดำเนินการ อัลกอริธึมแบบสุ่มและอัลกอริธึมน่าจะเป็นแนวคิดเดียวกันหรือไม่ ถ้าใช่อัลกอริธึมแบบสุ่มเป็นแค่อัลกอริธึมแบบ nondeterministic หรือไม่?

4
แจกแจงกราฟที่ไม่ใช่ isomorphic ทั้งหมดในขนาดที่กำหนด
ฉันต้องการที่จะระบุกราฟไม่มีทิศทางทั้งหมดของขนาดแต่ฉันต้องการเพียงหนึ่งตัวอย่างของแต่ละชั้นเรียนมอร์ฟ กล่าวอีกนัยหนึ่งฉันต้องการระบุกราฟที่ไม่ใช่ isomorphic (undirected) ทั้งหมดในn vertices ฉันจะทำสิ่งนี้ได้อย่างไรnnnnnn แม่นยำมากขึ้นฉันต้องการขั้นตอนวิธีการที่จะสร้างลำดับของกราฟไม่มีทิศทางมีคุณสมบัติดังต่อไปสำหรับทุกกราฟไม่มีทิศทางGบนnจุดมีอยู่ดัชนีฉันเช่นที่Gคือ isomorphic เพื่อGฉัน ฉันต้องการอัลกอริทึมให้มีประสิทธิภาพมากที่สุด กล่าวอีกนัยหนึ่งตัวชี้วัดที่ฉันสนใจคือเวลาที่ใช้ในการสร้างและทำซ้ำผ่านรายการของกราฟนี้ เป้าหมายรองคือจะดีถ้าอัลกอริทึมไม่ซับซ้อนเกินกว่าที่จะนำมาใช้G1,G2,…,GkG1,G2,…,GkG_1,G_2,\dots,G_kGGGnnniiiGGGGiGiG_i โปรดสังเกตว่าฉันต้องมีกราฟอย่างน้อยหนึ่งกราฟจากแต่ละคลาส isomorphism แต่มันก็โอเคถ้าอัลกอริทึมสร้างมากกว่าหนึ่งอินสแตนซ์ โดยเฉพาะอย่างยิ่งมันก็โอเคถ้าลำดับเอาต์พุตประกอบด้วยกราฟ isomorphic สองกราฟถ้าสิ่งนี้ช่วยให้ค้นหาอัลกอริทึมดังกล่าวได้ง่ายขึ้นหรือทำให้อัลกอริทึมมีประสิทธิภาพมากขึ้นตราบใดที่กราฟนั้นครอบคลุมกราฟที่เป็นไปได้ทั้งหมด ใบสมัครของฉันจะเป็นดังนี้: ฉันมีโปรแกรมที่ฉันต้องการที่จะทดสอบกราฟทั้งหมดของขนาดnฉันรู้ว่าถ้าสองกราฟ isomorphic โปรแกรมของฉันจะทำงานเหมือนกันทั้งคู่ (มันอาจจะถูกต้องทั้งบนหรือไม่ถูกต้องทั้งสองอย่าง) ดังนั้นมันจะพอเพียงที่จะระบุตัวแทนอย่างน้อยหนึ่งตัวแทนจากแต่ละชั้น isomorphism แล้วทดสอบ โปรแกรมในอินพุตเหล่านั้น ในใบสมัครของฉันnค่อนข้างเล็กnnnnnn อัลกอริทึมผู้สมัครบางส่วนที่ฉันได้พิจารณา: ฉันสามารถระบุเมทริกซ์ adjacency ที่เป็นไปได้ทั้งหมดเช่นเมทริกซ์สมมาตร 0-or-1 ทั้งหมดที่มี 0 ทั้งหมดบน diagonals อย่างไรก็ตามจำเป็นต้องมีเมทริกซ์2 n ( n - 1 ) / 2 เมทริกซ์เหล่านั้นจำนวนมากจะแสดงกราฟไอโซมอร์ฟิคดังนั้นดูเหมือนว่ามันจะต้องใช้ความพยายามอย่างมากn×nn×nn\times n2n(n−1)/22n(n−1)/22^{n(n-1)/2} ฉันสามารถแจกแจงเมทริกซ์ …

1
การนับจำนวนเส้นทางง่าย ๆ ระหว่างสองโหนดในกราฟที่กำกับนั้นยากเพียงใด
มีอัลกอริทึมพหุนามที่ง่ายต่อการตัดสินใจว่ามีเส้นทางระหว่างสองโหนดในกราฟกำกับ (เพียงทำกราฟข้ามประจำกับพูดการค้นหาเชิงลึกครั้งแรก) อย่างไรก็ตามดูเหมือนว่าน่าแปลกใจว่าปัญหาจะยากขึ้นมากถ้าแทนที่จะทดสอบการมีอยู่ที่เราต้องการต้องการนับจำนวนเส้นทาง หากเราอนุญาตให้เส้นทางนำจุดยอดมาใช้ใหม่ได้จะมีวิธีการเขียนโปรแกรมแบบไดนามิกเพื่อค้นหาจำนวนเส้นทางจากsถึงtด้วยขอบn อย่างไรก็ตามหากเราอนุญาตเส้นทางที่เรียบง่ายเท่านั้นซึ่งไม่ได้ใช้จุดยอดซ้ำวิธีแก้ปัญหาเดียวที่ฉันคิดได้คือการระบุเส้นทางที่โหดร้ายสิ่งที่มีความซับซ้อนของเวลาแบบทวีคูณ ดังนั้นฉันถาม การนับจำนวนเส้นทางง่าย ๆ ระหว่างจุดยอดสองจุดนั้นยากไหม? ถ้าเป็นเช่นนั้นมันเป็น NP-complete หรือไม่? (ฉันพูดชนิดเพราะในทางเทคนิคไม่ใช่ปัญหาการตัดสินใจ ... ) มีปัญหาอื่น ๆ ใน P ที่มีเวอร์ชันที่นับยากเช่นนี้อีกหรือไม่? **

2
รับกราฟเพื่อทดสอบอัลกอริทึมการค้นหาของฉันได้ที่ไหน
ฉันกำลังใช้ชุดของการค้นหาอัลกอริทึมเช่น Dijkstra's, Depth First เป็นต้น ตอนแรกฉันใช้กราฟตัวเองสองสามตัว แต่ตอนนี้ฉันอยากจะท้าทายต่อไปอีกเล็กน้อยและฉันก็กำลังมองหา กราฟที่ใช้ในการวัดประสิทธิภาพ กราฟของเมืองในโลกแห่งความเป็นจริง (หรือวิธีดาวน์โหลดข้อมูลประเภทนั้นจาก google maps หรือแหล่งข้อมูลประเภทอื่น ๆ ถ้าเป็นไปได้) ฉันต้องการให้แหล่งข้อมูลเหล่านั้นมีหรืออนุญาตให้ฉันสร้างเขตแดนได้อย่างง่ายดายซึ่งฉันสามารถลองใช้อัลกอริธึมสำหรับชุดกราฟขนาดต่าง ๆ ได้ถ้าเป็นไปได้ ฉันกำลังมองหาวิธีแก้ปัญหาอย่างง่ายเนื่องจากฉันไม่ต้องการเบี่ยงเบนความสนใจจากเป้าหมายหลัก (เปรียบเทียบชุดของอัลกอริธึมที่แตกต่างกัน) ดังนั้นฉันจึงต้องการวิธีที่รวดเร็วในการแปลงข้อมูลกราฟนั้นเป็นรูปแบบของฉันเอง ชุด(x, y)จุดเชื่อมต่อ) เพื่อให้เป็นรูปธรรมมากขึ้นสิ่งที่ฉันกำลังมองหาคือกราฟวงกลม 2 มิติ หากกราฟเหล่านั้นสะท้อนถนนในเมืองในโลกแห่งความเป็นจริง (โดยพิจารณาจากถนนเดินรถทางเดียวถนนสองทาง ฯลฯ ยังดีกว่า!)

4
จะตัดสินการเชื่อมต่อที่น่าจะเป็นในเครือข่ายโซเชียลได้อย่างไร?
ฉันสงสัยในการกำหนดวิธีการจัดการอัลกอริทึม "เพื่อนที่แนะนำ" Facebookมีคุณสมบัติที่จะแนะนำบุคคลที่คุณคิดว่าคุณอาจคุ้นเคย โดยปกติผู้ใช้เหล่านี้ (ยกเว้นกรณีขอบที่ผู้ใช้แนะนำโดยเฉพาะเพื่อน ) มีเครือข่ายที่คล้ายกันมากกับตัวเอง นั่นคือจำนวนเพื่อนที่เหมือนกันอยู่ในระดับสูง ฉันถือว่า Twitter เป็นไปตามเส้นทางที่คล้ายกันสำหรับกลไก "Who To Follow" ของพวกเขา Stephen Doyle (Igy)พนักงาน Facebook แนะนำว่าฟีดข่าวที่เกี่ยวข้องที่ใช้สูตร EdgeRankซึ่งดูเหมือนว่าบ่งบอกว่ามีค่ามากกว่าเพื่อนเช่นรูปลักษณ์เป็นโพสต์ที่คล้ายกัน ผู้ใช้รายอื่นแนะนำระบบ Google Rank Facebook ระบุว่าการเพิ่มประสิทธิภาพฟีดข่าวของพวกเขาเป็นโดยที่Σ ยูอีWอีdอีΣยูอีWอีdอี\sum u_{e}w_{e}d_{e} ยูอียูอีu_{e} = คะแนนความสัมพันธ์ระหว่างผู้ใช้ที่ดูและผู้สร้างขอบ = น้ำหนักสำหรับขอบนี้ (สร้าง, ความคิดเห็น, ชอบ, แท็ก, ฯลฯ ) = ปัจจัยการสลายตัวของเวลาขึ้นอยู่กับระยะเวลาที่สร้างขอบ WอีWอีw_{e} dอีdอีd_{e} การสรุปรายการเหล่านี้ควรจะให้อันดับของวัตถุที่ฉันถือว่าเป็นไอ้บอกใบ้หมายถึงบางสิ่งในรูปแบบที่คล้ายกันใช้สำหรับเพื่อน ดังนั้นฉันเดาว่านี่เป็นวิธีการเชื่อมต่อสำหรับทุกประเภทที่ทำโดยทั่วไปผ่านระบบอันดับหรือไม่

4
การสุ่มตัวอย่างแบบสม่ำเสมอจากเริม
ฉันกำลังมองหาอัลกอริทึมในการสร้างอาร์เรย์ของตัวเลขสุ่ม N ซึ่งผลรวมของตัวเลข N คือ 1 และตัวเลขทั้งหมดอยู่ภายใน 0 และ 1 ตัวอย่างเช่น N = 3 จุดสุ่ม (x, y, z) ควรอยู่ภายในสามเหลี่ยม: x + y + z = 1 0 < x < 1 0 < y < 1 0 < z < 1 โดยหลักการแล้วฉันต้องการให้แต่ละจุดภายในพื้นที่มีความน่าจะเป็นเท่ากัน ถ้ามันยากเกินไปฉันสามารถวางข้อกำหนดได้ ขอบคุณ

2
วิธีการตรวจสอบอย่างมีประสิทธิภาพว่าบันไดที่กำหนดนั้นถูกต้องหรือไม่?
ที่สควอชคลับในพื้นที่ของฉันมีบันไดซึ่งทำงานดังต่อไปนี้ ในตอนต้นของฤดูกาลเราสร้างตารางที่มีชื่อของสมาชิกแต่ละคนของสโมสรในบรรทัดแยกต่างหาก จากนั้นเราเขียนจำนวนเกมที่ชนะและจำนวนเกมที่เล่นถัดจากแต่ละชื่อ (ในรูปแบบ: ผู้เล่นชนะ / เกม) ดังนั้นในตอนต้นของฤดูกาลตารางจะมีลักษณะดังนี้: Carol 0/0 Billy 0/0 Alice 0/0 Daffyd 0/0 ผู้เล่นสองคนอาจเล่นคู่กับผู้เล่นคนหนึ่งชนะ หากผู้เล่นที่ใกล้ที่สุดด้านล่างของตารางชนะตำแหน่งของผู้เล่นจะเปลี่ยน จากนั้นเราทำซ้ำขั้นตอนที่ 2 อัปเดตจำนวนชัยชนะและเกมถัดจากผู้เล่นแต่ละคน ตัวอย่างเช่นถ้าอลิซชนะบิลลี่เราก็มี Carol 0/0 Alice 1/1 Billy 0/1 Daffyd 0/0 การแข่งขันเหล่านี้ยังคงดำเนินต่อไปตลอดทั้งฤดูกาล น่าเสียดายที่การอัปเดตเกิดขึ้นในลักษณะที่ค่อนข้างจับจดดังนั้นจึงเกิดข้อผิดพลาดขึ้น ด้านล่างนี้เป็นตัวอย่างของตารางที่ไม่ถูกต้องกล่าวคือตารางที่ไม่สามารถสร้างได้โดยทำตามขั้นตอนด้านบนอย่างถูกต้องสำหรับบางคำสั่งเริ่มต้น (เราลืมคำสั่งที่เราใช้เมื่อต้นฤดูกาล) และลำดับการแข่งขันและผลลัพธ์: Alice 0/1 Billy 1/1 Carol 0/1 Daffyd 0/0 Alice 2/3 Billy 0/1 Carol 0/0 Daffyd …

2
เหตุใด C ประเภทโมฆะจึงไม่คล้ายกับประเภทที่ว่าง / ด้านล่าง
Wikipedia ตลอดจนแหล่งข้อมูลอื่น ๆ ที่ฉันได้พบรายการvoidประเภทC เป็นหน่วยประเภทซึ่งตรงข้ามกับประเภทที่ว่างเปล่า ฉันพบว่ามันสับสนเพราะฉันคิดว่าvoidเหมาะกับนิยามของประเภทที่ว่าง / ล่าง ไม่มีค่านิยมใด ๆ อยู่voidเท่าที่ฉันจะบอกได้ ฟังก์ชั่นที่มีประเภทคืนค่าเป็นโมฆะระบุว่าฟังก์ชั่นจะไม่ส่งคืนสิ่งใดดังนั้นจึงสามารถทำงานได้เพียงผลข้างเคียงเท่านั้น ตัวชี้ชนิดvoid*เป็นชนิดย่อยของชนิดตัวชี้อื่นทั้งหมด นอกจากนี้การแปลงไปยังและจากvoid*ใน C นั้นเป็นนัย ผมไม่แน่ใจว่าถ้าจุดสุดท้ายมีบุญใด ๆ ที่เป็นข้อโต้แย้งสำหรับvoidการเป็นประเภทที่ว่างเปล่าเป็นมากหรือน้อยเป็นกรณีพิเศษที่มีความสัมพันธ์ไม่มากที่จะvoid*void ในทางกลับกันvoidตัวมันเองไม่ใช่ประเภทย่อยของประเภทอื่นทั้งหมดซึ่งเท่าที่ฉันสามารถบอกได้ว่าเป็นข้อกำหนดสำหรับประเภทที่จะเป็นประเภทด้านล่าง
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

3
เหตุใดการเรียงลำดับการเลือกจึงเร็วกว่าการจัดเรียงฟอง
มันเขียนไว้ใน Wikipediaว่า "... การเรียงลำดับการเลือกเกือบจะดีกว่าการเรียงลำดับฟองและเรียงลำดับคำพังเพย" ใครช่วยอธิบายหน่อยได้ไหมว่าทำไมการเรียงลำดับการเลือกจึงถือว่าเร็วกว่าการเรียงลำดับฟองแม้ว่าทั้งคู่จะมี: ความซับซ้อนของเวลากรณีที่แย่ที่สุด :O ( n2)O(n2)\mathcal O(n^2) จำนวนการเปรียบเทียบ : O ( n2)O(n2)\mathcal O(n^2) ความซับซ้อนของเวลากรณีที่ดีที่สุด : การจัดเรียงฟอง:O (n)O(n)\mathcal O(n) ตัวเลือกการเรียง:O ( n2)O(n2)\mathcal O(n^2) ความซับซ้อนของเวลากรณีโดยเฉลี่ย : การจัดเรียงฟอง:O ( n2)O(n2)\mathcal O(n^2) ตัวเลือกการเรียง:O ( n2)O(n2)\mathcal O(n^2)

1
การรวมกันของลำดับก่อนหลังโพสต์และลำดับที่ไม่ซ้ำกัน?
เรารู้ว่าโพสต์ - สั่ง post L(x) => [x] post N(x,l,r) => (post l) ++ (post r) ++ [x] และสั่งซื้อล่วงหน้า pre L(x) => [x] pre N(x,l,r) => [x] ++ (pre l) ++ (pre r) และการแวะผ่านตามลำดับ sequentialisation in L(x) => [x] in N(x,l,r) => (in l) ++ [x] ++ (in r) เราสามารถเห็นได้อย่างง่ายดายว่าไม่ได้อธิบายต้นไม้ที่ให้มาโดยเฉพาะแม้ว่าเราจะถือว่าคีย์ / …

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