Xin chào tất cả mọi người, chào mừng trở lại dữ liệu
cấu trúc và các thuật toán chuyên môn. Hôm nay, chúng ta sẽ nói về
những gì thực sự đi vào các thời gian chạy máy tính và thực sự hiểu thế nào
lâu mới có một chương trình làm việc. Vì vậy, đặc biệt,
hôm nay chúng tôi đang thực sự sẽ đi sâu vào. Tính đến thời điểm này, chúng tôi đang
sử dụng loại này số thô của dòng mã thực hiện đếm. Và hôm nay chúng ta sẽ nói
về cách chính xác này là gì và các loại biến chứng đi vào. Và đặc biệt chúng ta sẽ thấy rằng nếu chúng ta
thực sự muốn một cái gì đó là loại cơ bản là một thước đo chính xác của
thời gian chạy, nó sẽ là một rối lớn. Chúng ta sẽ phải mang trong tất cả
các loại dữ liệu bổ sung mà không thực sự thuận tiện cho chúng ta. Và như vậy, chúng tôi đang thực sự loại nói về những vấn đề mà đi
với tính toán thời gian chạy trong các thuật toán. Một cái gì đó mà chúng ta sẽ không
giải quyết thực sự cho đến các bài giảng tiếp theo. Vì vậy, để bắt đầu, chúng ta hãy nhìn vào
thuật toán này mà chúng ta có để tính số Fibonacci. Ghi chúng tôi tạo ra một mảng. Chúng tôi giao các yếu tố 0 đến 0. Yếu tố đầu tiên là 1. Sau đó, chúng tôi có bốn vòng lặp lớn này, nơi
chúng tôi đặt yếu tố i để tổng của tôi trừ đi đầu tiên và
tôi trừ yếu tố thứ hai và sau đó vào cuối ngày chúng tôi
trả lại phần tử thứ n với bạn. Vì vậy, chúng tôi xác định rằng khi chúng ta chạy này
chương trình chúng tôi thực hiện về 2n + 2 dòng mã. Nhưng chúng ta nên tự hỏi mình,
là con số này của dòng mã thực hiện phát hành với một mô tả chính xác
của thời gian chạy của thuật toán? Và, tôi có nghĩa là, bằng cách nào đó, mặc nhiên,
biện pháp này của dòng mã giả định rằng loại của hai dòng mã
là loại có thể so sánh với nhau. Họ đang sắp xếp của một hoạt động cơ bản. Và như vậy, chúng ta hãy thực sự nhìn vào
chương trình này trong một số chi tiết và xem những gì đi vào một số trong những dòng
mã và xem làm thế nào có giá trị giả định này là. Vì vậy, để bắt đầu, chúng tôi tạo ra mảng này. Và điều gì sẽ xảy ra khi bạn
cố gắng khởi tạo một mảng? Vâng, điều này phụ thuộc rất nhiều vào
hệ thống quản lý bộ nhớ của bạn. Về cơ bản, tất cả các bạn phải làm là
loại tìm thấy một số không gian trong bộ nhớ và sau đó nhận được để con trỏ đến vị trí đầu tiên. Mặt khác, chính các bạn tìm thấy
này, có lẽ bạn cần phải xáo trộn một số thứ khác xung quanh để nhường chỗ cho nó, có lẽ
sau khi bạn phân bổ mảng, sau đó bạn muốn không ra tất cả các mục để các
bạn không có rác ngồi trong đó. Và như vậy, nó không hoàn toàn rõ ràng. Nó phụ thuộc một chút về cách chính xác
chương trình của bạn đã được giải thích. Nhưng nó có thể là khá nhanh. Nó thực sự có thể mất một thời gian,
tùy thuộc vào hoàn cảnh. Hãy nhìn vào các dòng tiếp theo. Đây chỉ là một nhiệm vụ đơn giản,
chúng tôi đặt mục 0 đến 0. Tuy nhiên, nếu bạn thực sự nhìn vào điều này, ở cấp độ máy, bạn đang làm một chút
công việc nhiều hơn, bạn cần phải tải lên các con trỏ tới phần tử 0 đến mảng, bạn có thể
sau đó phải làm một số phép tính con trỏ, sau đó bạn cần phải lưu trữ đen này
0 thành vị trí này trong bộ nhớ. Nó thực sự có thể không phải là một hoạt động nhưng
một vài thao tác. Tương tự như vậy khi chúng tôi đặt
yếu tố đầu tiên để một, bạn phải làm như vậy
mà bộ này rất tương tự của sự vật. Bên cạnh này là bốn vòng và
với bốn vòng, một lần nữa mỗi khi bạn bạn phải làm một vài điều,
bạn cần phải tăng giá trị của tôi. Bạn không cần phải so sánh tôi với n để xem
nếu bạn cần phải thoát ra khỏi vòng lặp và nếu được, bạn cần đến chi nhánh, bạn cần phải di chuyển đến hướng dẫn khác
trong chương trình của bạn sau bốn vòng lặp. Tiếp theo đó là bổ sung này và
ở đây chúng ta phải làm điều gì đó, chúng ta phải tìm đến các giá trị trong mảng đó, chúng tôi có
viết thư cho một giá trị thứ ba trong mảng. Tất cả điều này liên quan đến cùng một
loại con trỏ số học, và tra cứu bộ nhớ, và các quyền mà
chúng ta đã nói về trước, nhưng chúng tôi cũng phải làm ngoài này. Và nếu nó chỉ là một bổ sung bình thường,
có thể nó sẽ không được một việc lớn như vậy. Tuy nhiên, điều này là bổ sung của
hai số Fibonacci, và nếu bạn sẽ nhớ lại từ một vài bài giảng
trước đây, chúng tôi thấy rằng số Fibonacci chúng tôi đang khá lớn, trên thực tế, quá lớn, họ có thể
không phù hợp với các máy tính đơn lẻ từ. Vì vậy, thêm hai người với nhau thực sự
mất một số tiền không nhỏ của thời gian. Vì vậy, bằng cách nào đó,
không chỉ làm bạn phải làm tất cả trong số này, mảng thứ số học nhưng,
việc bổ sung thực tế của các số Fibonacci thực sự là một khá
hoạt động không tầm thường. Và sau đó, chúng tôi làm điều này thứ trở lại nơi mà chúng tôi
phải làm một tra cứu mảng trong đó bao gồm tất cả các loại điều chúng tôi nói về
rồi và sau đó phải làm một trở lại trong đó loại sẽ hoạt động
với các chương trình ngăn xếp và phân loại của bật nó lên một mức độ và
trở lại một câu trả lời. Vì vậy, trong kết luận, chương trình này
có sáu dòng code để nó nhưng số lượng công việc đang được thực hiện trong nhiều
dòng mã là rất, rất khác nhau. Những gì chính xác những gì đi vào từng dòng
mã không phải là loại ở tất cả những điều tương tự. Có lẽ chúng ta muốn xem xét lại
thực tế rằng số này, số lượng các dòng mã,
là loại thời gian chạy của chúng tôi. Có lẽ chúng ta cần phải đo lường cái gì khác. Vì vậy, những gì khác chúng ta nên làm gì? Vâng, nếu y
đang được dịch, vui lòng đợi..
