BIG O LÀ GÌ

     

Nếu chúng ta đã thực hiện một số các khóa học thuật toán liên quan, có lẽ rằng bạn đang nghe nói đến thuật ngữBig O ký kết hiệu.Nếu các bạn chưa có, bọn họ sẽ để ý nó ở đây, và tiếp đến hiểu sâu hơn về nó thực thụ là gì.

Bạn đang xem: Big o là gì

Ký hiệu Big O là một trong những công cầm cơ bạn dạng nhất để các nhà khoa học laptop phân tích chi tiêu của một thuật toán.Đó là một trong những thực tiễn xuất sắc cho những kỹ sư ứng dụng để phát âm sâu hơn.

Bài viết này được viết với đưa định rằng chúng ta đã giải quyết và xử lý một số mã.Ngoài ra, một số trong những tài liệu sâu sát cũng yêu cầu những nguyên tắc cơ phiên bản về toán trung học phổ thông, và vì đó rất có thể ít thoải mái hơn một chút so với những fan mới bắt đầu.Nhưng nếu bạn đã sẵn sàng, hãy bắt đầu!

Trong nội dung bài viết này, chúng ta sẽ bàn luận sâu hơn về cam kết hiệu Big O.Chúng tôi sẽ ban đầu với một thuật toán lấy một ví dụ để không ngừng mở rộng sự phát âm biết của chúng tôi.Sau đó, bọn họ sẽ đi sâu vào toán học một chút để có một sự gọi biết thiết yếu thức.Sau đó, chúng ta sẽ coi xét một vài biến thể thông dụng của ký kết hiệu Big O.Cuối cùng, chúng ta sẽ bàn thảo về một trong những hạn chế của Big O trong một kịch bạn dạng thực tế.Mục lục rất có thể được tra cứu thấy bên dưới.

Mục lục

Ký hiệu Big O là gì và lý do nó lại quan trọngĐịnh nghĩa thừa nhận của ký hiệu Big OBig O, Little O, Omega và ThetaSo sánh độ phức hợp giữa những Big Os điển hìnhThời gian & không gian phức tạpTốt nhất, Trung bình, tệ hại nhất, Độ phức hợp Dự kiếnTại sao Big O ko quan trọngĐến cuối cùng…

Vậy hãy bắt đầu.

1. Ký kết hiệu Big O là gì, và nguyên nhân nó lại quan trọng

“Ký hiệu Big O là 1 trong ký hiệu toán học biểu lộ hành vi giới hạn của một hàm lúc đối số gồm xu hướng nhắm đến một giá bán trị ví dụ hoặc vô cùng.Nó là 1 trong những thành viên của tập thể nhóm ký hiệu do Paul Bachmann, Edmund Landau và những người dân khác phân phát minh, được gọi thông thường là cam kết hiệu Bachmann – Landau hoặc cam kết hiệu tiệm cận. ”- Định nghĩa của Wikipedia về ký hiệu Big O

Nói một phương pháp dễ hiểu, ký kết hiệu Big O mô tảđộ phức tạpcủa mã của bạn bằng phương pháp sử dụng các thuật ngữ đại số.

Để hiểu cam kết hiệu Big O là gì, bạn có thể xem một ví dụ điển hình,O (n²), hay được phát âm là“Big O bình phương”.Chữ cái“n”ở đây thay mặt chokích thước đầu vàovà hàm“g (n) = n²”bên trong“O ()”cho bọn họ ý tưởng về mức độ tinh vi của thuật toán đối với kích thước đầu vào.

Một thuật toán nổi bật có độ tinh vi là O (n²) sẽ làthuật toánsắp xếp lựa chọn.Sắp xếp lựa chọn là một thuật toán thu xếp lặp qua list để bảo đảm an toàn mọi thành phần tại chỉ mụcilàphần tử nhỏ nhất / phệ nhấtthứ icủa danh sách.CácCODEPENdưới đây giới thiệu một ví dụ trực quan tiền của nó.

Thuật toán hoàn toàn có thể được mô tả bởi đoạn mã sau.Để đảm bảophần tửthứ ilà phần tửnhỏ nhấtthứ itrong danh sách, thuật toán này trước tiên đang lặp qua danh sách bằng một vòng lặp for.Sau đó, so với mỗi phần tử, nó áp dụng một vòng lặp for khác nhằm tìm phần tử nhỏ tuổi nhất vào phần còn sót lại của danh sách.

SelectionSort(List) for(i from 0 to lớn List.Length) SmallestElement = List for(j from i khổng lồ List.Length) if(SmallestElement > List) SmallestElement = List Swap(List, SmallestElement) Trong trường thích hợp này, chúng tôi coi biếnDanh sáchlà đầu vào, vày đó kích cỡ đầu vào n làsố phần tử phía bên trong Danh sách.Giả sử câu lệnh if cùng phép gán quý hiếm bị ràng buộc vày câu lệnh if, mất thời hạn không đổi.Sau đó, chúng ta có thể tìm thấy ký hiệu O bự cho hàm SelectionSort bằng cách phân tích số lần những câu lệnh được thực thi.

Đầu tiên, vòng lặp for bên trong chạy những câu lệnh bên phía trong n lần.Và sau khitôiđược tăng lên, vòng lặp for bên phía trong chạy trong n-1 lần…… cho đến khi nó chạy một lần, kế tiếp cả hai vòng lặp for mọi đạt mang đến điều kiện ngừng của chúng.

*
Lựa lựa chọn sắp xếp các vòng lặp được minh họa

Điều này thực sự dứt cho chúng ta một tổng hình học với với một sốmôn toán trung học,chúng ta sẽ thấy rằng vòng lặp bên phía trong sẽ tái diễn 1 + 2… + n lần, tương đương với n (n-1) / 2 lần.Nếu chúng ta nhân số này cùng với nhau, chúng ta sẽ nhận được n² / 2-n / 2.

Khi họ tính toán ký kết hiệu O lớn, họ chỉ xem xét các số hạngchi phối, và bọn họ không để ý đến các hệ số.Vì vậy, chúng tôi lấy n² là chữ O. Lớn sau cuối của chúng tôi. Shop chúng tôi viết nó là O (n²), một đợt tiếp nhữa được vạc âm là“Big O bình phương”.

Bây giờ bạn cũng có thể tự hỏi,"thuật ngữ thống trị"này làvề chiếc gì?Và trên sao bọn họ không suy nghĩ các hệ số?Đừng lo lắng, công ty chúng tôi sẽ điểm qua từng mẫu một.Có thể hơi cực nhọc hiểu ở chỗ đầu, nhưng toàn bộ sẽ có ý nghĩa hơn khi chúng ta đọc qua phần tiếp theo.

2. Định nghĩa chấp nhận của cam kết hiệu Big O

Ngày xưa, bao gồm một vị vua Ấn Độ mong ban thưởng cho một nhà uyên bác vì sự xuất sắc của ông ta.Nhà uyên bác không yêu ước gì ngoại trừ một không nhiều lúa mì hoàn toàn có thể lấp đầy bàn cờ.

Nhưng đây là quy tắc của anh ấy ta: trong ô đầu tiên anh ta mong 1 hạt lúa mì, tiếp đến là 2 nghỉ ngơi ô đồ vật hai, rồi 4 ngơi nghỉ ô tiếp theo… mỗi ô trên bàn cờ cần được lấp đầy bằng gấp rất nhiều lần số hạt như trước. Một.Vị vua ngây thơ gật đầu đồng ý mà không vị dự, nghĩ về rằng kia sẽ là một trong những yêu cầu bình bình để đáp ứng, cho đến khi ông thực sự tiếp tục và demo nó…

*
Lúa mì và Bàn cờ, Hình hình ảnh từWikipedia

Các số lượng tăng trưởng tương đối nhanh tiếp đến để lớn lên theo cấp cho số nhân nên không?Logic giống như cũng xảy ra đối với các thuật toán đồ vật tính.Nếu gần như nỗ lực quan trọng để xong một nhiệm vụ tăng thêm theo cấp số nhân so với kích thước đầu vào, thì nó có thể trở nên cực kì lớn.

Bây tiếng bình phương của 64 là 4096. Nếu khách hàng thêm số kia vào 2⁶⁴, nó có khả năng sẽ bị mất bên phía ngoài các chữ số có nghĩa.Đây là vì sao tại sao, khi chúng ta nhìn vào vận tốc tăng trưởng, họ chỉ suy nghĩ các pháp luật chi phối.Và vì cửa hàng chúng tôi muốn so với sự tăng trưởng tương quan đến kích cỡ đầu vào, nên những hệ số chỉ nhân số thay bởi tăng trưởng với size đầu vào không chứa thông tin hữu ích.

Dưới đây là định nghĩa chấp thuận của Big O:

*
CSE 373 Trang trình bàytừ Đại học tập Washington

Định nghĩa bề ngoài rất hữu ích khi chúng ta cần thực hiện một phép toán.Ví dụ, độ phức hợp về thời gian để sắp xếp lựa chọn hoàn toàn có thể được khẳng định bởi hàm f (n) = n² / 2-n / 2 như bọn họ đã luận bàn trong phần trước.

Nếu chúng ta cho phép hàm g (n) là n², chúng ta cũng có thể tìm thấy hằng số c = 1, và N a = 0, cùng miễn là N> N₀, N² đã luôn lớn hơn N² / 2-N / 2.Chúng ta hoàn toàn có thể dễ dàng chứng minh điều này bằng phương pháp trừ N² / 2 cho tất cả hai hàm, sau đó chúng ta có thể dễ dàng thấy N² / 2> -N / 2 là đúng vào khi N> 0. Vị đó, chúng ta có thể đi đến tóm lại rằng f (n) = O (n²), trong kiểu chắt lọc kháclà "bình phươngO lớn".

Bạn hoàn toàn có thể nhận thấy một mẹo nhỏ tuổi ở đây.Nghĩa là, nếu như khách hàng làm cho g (n) bự nhanh, nhanh hơn bất cứ thứ gì, O (g (n)) sẽ luôn luôn đủ lớn.Ví dụ, đối với ngẫu nhiên hàm đa thức nào, chúng ta luôn có thể đúng lúc nói rằng chúng là O (2ⁿ) vị 2ⁿ ở đầu cuối sẽ bự hơn bất kỳ đa thức nào.

Về phương diện toán học, chúng ta đúng, nhưng lại nói chung khi bọn họ nói về Big O, bọn họ muốn biếtgiới hạn chặt chẽcủa hàm.Bạn vẫn hiểu điều đó nhiều hơn khi chúng ta đọc qua phần tiếp theo.

Nhưng trước lúc đi, chúng ta hãy soát sổ sự hiểu biết của chúng ta bằng câu hỏi sau.Câu vấn đáp sẽ được tra cứu thấy trong những phần sau cần sẽ chưa hẳn là điều cần thiết.

Câu hỏi:Một hình ảnh được trình diễn bằng một mảng pixel 2D.Nếu bạn áp dụng vòng lặp for lồng nhau nhằm lặp qua mọi px (nghĩa là các bạn có vòng lặp for đi qua toàn bộ các cột, sau đó vòng lặp for khác bên phía trong để đi qua tất cả các hàng), thì độ phức tạp về thời hạn của thuật toán là bao nhiêu khi hình hình ảnh được xem là đầu vào?

3. Chữ O lớn, chữ O nhỏ, Omega & Theta

O lớn: “f (n) là O (g (n))” iff đối với một số hằng số c cùng N₀, f (N) ≤ cg (N) với tất cả N> N₀Omega: “f (n) là Ω (g (n))” iff đối với một số hằng số c và N₀, f (N) ≥ cg (N) với đa số N> N₀Theta: “f (n) là Θ (g (n))” iff f (n) là O (g (n)) với f (n) là Ω (g (n))O nhỏ: “f (n) là o (g (n))” iff f (n) là O (g (n)) với f (n) không phải là Θ (g (n))—Định nghĩa cơ bản về Big O, Omega, Theta với Little O

Nói một bí quyết dễ hiểu:

Big O (O ())mô tảgiới hạn trêncủa độ phức tạp.Omega (Ω ())mô tảgiới hạn dướicủa độ phức tạp.Theta (Θ ())mô tảgiới hạn chính xáccủa độ phức tạp.Nhỏ O (o ())mô tảgiới hạn trên không bao gồm giới hạn chính xác.
*
Mối quan hệ nam nữ giữa Big O, Little O, Omega và Theta được minh họa

Ví dụ, hàm g (n) = n² + 3n là O (n³), o (n⁴), Θ (n²) với Ω (n).Nhưng chúng ta vẫn đúng trường hợp nói nó là Ω (n²) hoặc O (n²).

Nói chung, khi họ nói về Big O, ý của chúng ta thực sự là Theta.Sẽ là vô nghĩa khi bạn đưa ra một số lượng giới hạn trên to hơn nhiều đối với phạm vi phân tích.Điều này tương tự như như câu hỏi giải những bất đẳng thức bằng phương pháp đặt ∞ vào cạnh phệ hơn, điều này số đông luôn khiến bạn đúng.

Nhưng làm giải pháp nào để xác định những chức năng nào phức hợp hơn những công dụng khác?Trong phần tiếp theo các bạn sẽ đọc, họ sẽ search hiểu điều đó một biện pháp chi tiết.

4. đối chiếu độ tinh vi giữa các Os phệ điển hình

Khi họ đang nỗ lực tìm ra Big O cho 1 hàm cụ thể g (n), chúng ta chỉ cân nhắc số hạngchi phốicủa hàm.Thuật ngữ chiếm ưu nạm là thuật ngữ cải tiến và phát triển nhanh nhất.

Ví dụ, n² cách tân và phát triển nhanh rộng n, vì chưng vậy nếu họ có một cái nào đấy như g (n) = n² + 5n + 6, nó vẫn là O (n²) lớn.Nếu chúng ta đã thực hiện một số trong những phép tính trước đây, điều này rất như thể với phương pháp tìm giới hạn cho đa thức phân số, ở đầu cuối bạn chỉ cân nhắc số hạng chủ yếu của tử số và mẫu số.

*
Một biện pháp khác giúp thấy Big O, Hình ảnh từStack Overflow

Nhưng tác dụng nào cách tân và phát triển nhanh hơn các tính năng khác?Thực ra có khá nhiều quy tắc.

Xem thêm: Chuyển Động Của Đầu Van Xe Đạp Là Gì, Đầu Van Xe Đạp Là Gì

*
Minh họa về lớn lên độ phức hợp từBig O Cheatsheet1. O (1) có độ phức hợp thấp nhất

Thường được call là“thời gian không đổi”, nếu bạn cũng có thể tạo ra một thuật toán để giải quyết và xử lý vấn đề vào O (1), có lẽ bạn đã ở trạng thái tốt nhất.Trong một số trong những tình huống, độ phức tạp hoàn toàn có thể vượt ra ngoài O (1), lúc đó chúng ta cũng có thể phân tích chúng bằng cách tìm đối bệnh O (1 / g (n)) của nó.Ví dụ, O (1 / n) phức hợp hơn O (1 / n²).

2. O (log (n)) phức hợp hơn O (1), mà lại kém phức hợp hơn đa thức

Vì độ phức tạp thường tương quan đến những thuật toán phân chia và chinh phục, O (log (n)) nói phổ biến là độ phức tạp xuất sắc mà bạn có thể đạt được cho các thuật toán sắp xếp.O (log (n)) ít phức tạp hơn O (√n), do hàm căn bậc hai có thể được xem là một nhiều thức, trong số ấy số mũ là 0,5.

3. Độ tinh vi của đa thức tăng khi số mũ tăng

Ví dụ, O (n⁵) phức tạp hơn O (n⁴).Do tính đơn giản của nó, chúng ta thực sự đã xem qua không ít ví dụ về nhiều thức trong số phần trước.

4. Cấp số nhân gồm độ phức tạp to hơn đa thức miễn là những hệ số là bội số dương của n

O (2ⁿ) phức tạp hơn O (n⁹⁹), nhưng lại O (2ⁿ) đích thực ít phức tạp hơn O (1).Chúng tôi thường lấy 2 làm cửa hàng cho hàm mũ và logarit do mọi đồ vật có xu thế là hệ nhị phân trong khoa học máy tính, mà lại số mũ có thể đượcthay đổibằng cách chuyển đổi các hệ số.Nếu ko được chỉ định, cơ số mang đến logarit được đưa định là 2.

5. Nguyên tố gồm độ phức tạp to hơn cấp số nhân

Nếu bạn xem xét suy luận, hãy tra cứuhàm Gamma, nó là sựtiếp tục giải tíchcủa một giai thừa.Một bằng chứng ngắn gọn gàng là cả nhị giai vượt và cấp cho số nhân đều có cùng một vài phép nhân, nhưng các số được nhân tăng lên so với các giai thừa, trong khi không đổi so với cấp số nhân.

6. Nhân các điều khoản

Khi nhân lên, độ tinh vi sẽ lớn hơn ban đầu, nhưng lại không nhiều hơn thế tương đương với bài toán nhân một thứ tinh vi hơn.Ví dụ, O (n * log (n)) phức hợp hơn O (n) dẫu vậy kém tinh vi hơn O (n²), vì O (n²) = O (n * n) cùng n phức hợp hơn log (n ).

Để kiểm soát sự gọi biết của bạn, thử xếp hạng các tác dụng sau từ phức hợp nhất đến phức hợp cho thuê.Các giải pháp với giải mã thích chi tiết có thể được tìm thấy trong phần sau khi chúng ta đọc.Một số trong những chúng tức là phức tạp và có thể yêu cầu một số trong những hiểu biết sâu rộng về toán học.Khi bạn đi mang đến giải pháp, các bạn sẽ hiểu chúng nhiều hơn.

Câu hỏi:Xếp hạng các công dụng sau từ phức tạp nhất đến phức hợp cho thuê.
*
Các ví dụ lấy từCác vụ việc trong Sách giáo khoaLời giải cho chỗ 2 Câu hỏi:Nó thực sự được coi là một câu hỏi mẹo để soát sổ sự gọi biết của bạn.Câu hỏi cố gắng khiến bạn vấn đáp O (n²) vì tất cả một vòng lặp for lồng nhau.Tuy nhiên, n được cho là kích thước đầu vào.Vì mảng hình hình ảnh là đầu vào và mỗi px chỉ được lặp lại một lần đề xuất câu vấn đáp thực sự là O (n).Phần tiếp theo sẽ xem xét những ví dụ khác như vậy này.

5. Sự tinh vi về thời gian và ko gian

Cho cho nay, chúng ta mới chỉ thảo luận về độ phức tạp về thời hạn của các thuật toán.Tức là chúng ta chỉ suy nghĩ việc công tác mất bao nhiêu thời gian để ngừng nhiệm vụ.Điều quan trọng nữa là không khí chương trình tất cả để xong xuôi nhiệm vụ.Độ tinh vi của không gian liên quan tới sự việc chương trình sẽ thực hiện bao nhiêu cỗ nhớ, và cho nên vì vậy cũng là 1 trong yếu tố đặc trưng cần phân tích.

Độ tinh vi không gian vận động tương từ như độ phức tạp thời gian.Ví dụ, thu xếp lựa chọn gồm độ phức tạp không khí là O (1), chính vì nó chỉ lưu trữ một giá trị bé dại nhất và chỉ còn số của nó để so sánh, không khí tối đa được áp dụng không tăng theo form size đầu vào.

Một số thuật toán, chẳng hạn như sắp xếp theo nhóm, tất cả độ phức tạp về không gian là O (n), nhưng có thể giảm độ phức hợp về thời gian thành O (1).Sắp xếp nhóm sắp xếp mảng bằng cách tạo list được sắp xếp gồm tất cả các thành phần có thể có trong mảng, tiếp đến tăng con số bất cứ lúc nào gặp phần tử.Cuối thuộc mảng đã sắp xếp sẽ là các phần tử danh sách được sắp xếp lặp lại theo con số của chúng.

*
Hình ảnh hóa bố trí nhóm

6. Giỏi nhất, Trung bình, Tồi nhất, Độ phức tạp Dự kiến

Sự phức hợp cũng rất có thể được đối chiếu thành ngôi trường hợp giỏi nhất, trường thích hợp xấu nhất, trường vừa lòng trung bình với trường hòa hợp dự kiến.

Ví dụ,hãy lấyphân các loại chèn.Sắp xếp chèn lặp qua tất cả các thành phần trong danh sách.Nếu bộ phận lớn hơn thành phần trước của nó, nó đang chèn bộ phận đó về phía sau cho tới khi nó mập hơn thành phần trước đó.

*
Phân một số loại chèn được minh họa, hình ảnh từWikipedia

Nếu mảng được bố trí ban đầu, sẽ không tồn tại hoán đổi nào được thực hiện.Thuật toán sẽ chỉ lặp qua mảng một lần, dẫn đến độ tinh vi về thời hạn là O (n).Do đó, chúng ta sẽ nói rằngđộ phức hợp thời gian trongtrường hợp tốt nhấtcủa bố trí chèn là O (n).Độ phức hợp của O (n) cũng thường xuyên được call làđộ tinh vi tuyến tính.

Đôi lúc 1 thuật toán chỉ chạm mặt vận rủi.Ví dụ, sắp xếp nhanh sẽ cần duyệt qua danh sách trong thời gian O (n) trường hợp các bộ phận được bố trí theo vật dụng tự ngược lại, tuy nhiên trung bình nó bố trí mảng trong thời hạn O (n * log (n)).Nói chung, khi chúng tôi đánh giá bán độ phức tạp về thời hạn của một thuật toán, cửa hàng chúng tôi sẽ xem xéthiệu suất trongtrường đúng theo xấu nhấtcủa chúng.Thông tin thêm về điều đó và thu xếp nhanh đang được thảo luận trong phần tiếp theo khi bạn đọc.

Độ phức tạp trường vừa lòng trung bình tế bào tả hiệu suất mong chờ của thuật toán.Đôi khi liên quan đến việc tính toán xác suất của từng tình huống.Nó hoàn toàn có thể trở nên tinh vi để đi vào chi tiết và cho nên vì thế không được bàn thảo trong bài viết này.Dưới đó là bảng ăn gian về độ tinh vi về thời hạn và không gian của các thuật toán điển hình.

*
Big O Cheatsheetcho những thuật toán phổ biếnLời giải dồn phần 4 Câu hỏi:

Bằng giải pháp kiểm tra những hàm, chúng ta có thể ngay mau chóng xếp hạng các đa thức sau từ phức tạp nhất đến phức tạp cho mướn với phép tắc 3. Trong những số ấy căn bậc hai của n chỉ với n với lũy thừa của 0,5.

*

Sau đó, bằng phương pháp áp dụng quy tắc 2 cùng 6, họ sẽ thừa nhận được thứ tự sau đây.Nhật ký cửa hàng 3 có thể được chuyển đổi sang cửa hàng 2 cùng với cácchuyển đổi cơ sở nhật ký.Nhật ký các đại lý 3 vẫn cải cách và phát triển chậm hơn một chút so với nhật ký cơ sở 2, và cho nên vì vậy được xếp thứ hạng sau.

*

Phần còn lại hoàn toàn có thể trông tương đối phức tạp, nhưng họ hãy cố gắng tiết lộ diện mạo thật của họ và xem bạn cũng có thể đặt chúng ở đâu.

Trước hết, 2 so với lũy vượt của 2 đối với lũy quá của n lớn hơn 2 đối với lũy thừa của n, với +1 các gia vị của nó thậm chí còn còn nhiều hơn.

*

Và vì chúng ta biết 2 thành lũy quá của log (n) với các đại lý 2 bởi n, chúng ta cũng có thể chuyển thay đổi như sau.Nhật ký với 0,001 bên dưới dạng số nón phát triển nhiều hơn thế nữa một chút so với hằng số, nhưng ít hơn phần nhiều mọi sản phẩm khác.

*

Một cùng với nthành lũy thừacủa log (log (n)) thực sự là 1 trong những biến thể củabán đa thức, to hơn đa thức nhưng nhỏ tuổi hơn cấp số nhân.Vì log (n) phát triển chậm hơn n bắt buộc độ tinh vi của nó sẽ thấp hơn một chút.Cái bao gồm log nghịch đảo quy tụ đến hằng số, do 1 / log (n) phân kỳ cho vô cùng.

*

Các giai thừa có thể được trình diễn bằng các phép nhân, và vày đó rất có thể được biến đổi thành những phép cộng bên ngoài hàm logarit."N lựa chọn 2" có thể được thay đổi thành một nhiều thức với số hạng bậc ba là phệ nhất.

*

Và cuối cùng, chúng ta cũng có thể xếp hạng các hàm từ phức tạp nhất cho ít tinh vi nhất.

*

Tại sao BigO ko quan trọng

!!!- CẢNH BÁO - !!!Nội dung thảo luận ở phía trên thườngkhông đượchầu hết các lập trình viên trên nắm giớichấp nhận.Thảo luận vềrủi ro của riêng biệt bạntrong một cuộc bỏng vấn.Mọi tín đồ thực sự đang viết blog về phong thái họthất bại trongcác cuộc vấn đáp trên Google do họ đặt thắc mắc về cơ quan, như sinh hoạt đây.!!!- CẢNH BÁO - !!!

Vì trước đây chúng ta đã biết rằng độ phức tạp về thời gian trong trường đúng theo xấu nhất so với sắp xếp cấp tốc là O (n²), dẫu vậy O (n * log (n)) so với sắp xếp hòa hợp nhất, sắp xếp hợp nhất sẽ nhanh hơn - cần không?Vâng, chúng ta cũng có thể đã đoán rằng câu vấn đáp là sai.Các thuật toán chỉ được thu xếp theo cách giúp sắp tới xếpnhanh giường “sắp xếp nhanh”.

Để chứng minh, hãy coi trangtrinket.iomà tôi vẫn thực hiện.Nó so sánh thời hạn để sắp tới xếp nhanh lẹ và thu xếp hợp nhất.Tôi chỉ nỗ lực kiểm tra nó trên những mảng bao gồm độ dài lên đến mức 10000, nhưng lại như bạn có thể thấy cho đến nay, thời hạn để phù hợp nhất sắp xếp tăng cấp tốc hơn sắp xếp nhanh.Mặc dù sắp xếp nhanh có độ phức hợp chữ hay thấp rộng là O (n²), khả năng xảy ra là đích thực thấp.Khi nói tới sự ngày càng tăng tốc độ bố trí nhanh gồm hơn bố trí hợp tuyệt nhất bị số lượng giới hạn bởi độ phức hợp O (n * log (n)), thu xếp nhanh kết thúc với công suất trung bình xuất sắc hơn.

*
So sánh thời hạn giữa bố trí nhanh & Sắp xếp vừa lòng nhất

Tôi cũng đã lập biểu đồ tiếp sau đây để so sánh phần trăm giữa thời gian chúng mất, bởi khó có thể nhìn thấy bọn chúng ở những giá trị rẻ hơn.Và như bạn cũng có thể thấy, tỷ lệ thời gian tiến hành để bố trí nhanh theo vật dụng tự bớt dần.

Xem thêm: Không Đóng Tiền Mạng Viettel Có Sao Không, Không Đóng Tiền Mạng Fpt Có Sao Không

*
Tỷ lệ thời hạn giữa sắp xếp nhanh & Sắp xếp vừa lòng nhất

Đạo lý của mẩu truyện là, ký hiệu Big O chỉ là 1 phân tích toán học để cung cấp tham chiếu về các tài nguyên được áp dụng bởi thuật toán.Thực tế, kết quả rất có thể khác.Nhưng nói chung là một trong thực tiễn giỏi khi nỗ lực giảm giảm độ tinh vi của các thuật toán của chúng tôi, cho tới khi chúng tôi gặp gỡ phải trường phù hợp mà cửa hàng chúng tôi biết bản thân đang làm cho gì.