K
Khách

Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.

19 tháng 8 2023

a)T(n) = O(n3)
a)T(n) = O(n4)

QT
Quoc Tran Anh Le
Giáo viên
23 tháng 8 2023

Công việc của hàm là thực hiện sắp xếp.

Độ phức tạp của thuật toán là O(n2)

19 tháng 8 2023

Tham khảo:

Hàm "Mystery(n)" sẽ trả về giá trị là r.

Độ phức tạp thời gian của chương trình này là O(n3)

QT
Quoc Tran Anh Le
Giáo viên
23 tháng 8 2023

*Chương trình 1:

from collections import Counter

import time

n = 1000

c = 0

# Ghi lại thời điểm bắt đầu

start_time = time.time()

for k in range(n):

  c = c + 1

# Ghi lại thời điểm kết thúc

end_time = time.time()

# Tính thời gian hoàn thành

elapsed_time = end_time - start_time

# Sử dụng hàm Counter để đếm số lần lặp

counter = Counter(range(n))

# In số lần lặp

print("Số lần lặp: {}".format(counter))

# In thời gian thực thi

print("Thời gian thực thi của chương trình: {:.6f} giây".format(elapsed_time))

*Chương trình 2:

import time

n = 1000

c = 0

# Ghi lại thời điểm bắt đầu

start_time = time.perf_counter()

for k in range(n):

 for j in range(n):

  c = c + 1

# Ghi lại thời điểm kết thúc

end_time = time.perf_counter()

# Tính thời gian hoàn thành

elapsed_time = end_time - start_time

# In số lần lặp

print("Số lần lặp: {}".format(c))

# In thời gian thực thi

print("Thời gian thực thi của chương trình: {:.6f} giây".format(elapsed_time))

→Sự khác biệt độ phức tạp thời gian của 2 chương trình trên:

Độ phức tạp thời gian của chương trình 1 là O(1), còn độ phức tạp thời gian của chương trình 2 là O(n2).

QT
Quoc Tran Anh Le
Giáo viên
23 tháng 8 2023

Chương trình trên tính số lần lặp cần thiết để i lớn hơn n bằng cách nhân i với 2 trong mỗi lần lặp, sau đó tăng biến sum lên 1. Để xác định độ phức tạp thời gian của chương trình này, ta cần xem xét số lần lặp của vòng while và các phép toán trong vòng lặp.

Vòng while: Vòng lặp này chạy cho đến khi i >= n, và giá trị ban đầu của i là 1. Trong mỗi lần lặp, i được nhân với 2, vậy số lần lặp là log2(n) (vì sau mỗi lần nhân i với 2, giá trị của i sẽ gấp đôi). Ví dụ, nếu n = 1000 thì số lần lặp là log2(1000) ≈ 10.

Các phép toán trong vòng lặp:

Phép gán i = i * 2: Đây là phép nhân, có độ phức tạp là O(1).

Phép gán sum = sum + 1: Đây là phép gán giá trị vào biến sum, có độ phức tạp là O(1).

Vậy tổng độ phức tạp thời gian của chương trình là O(log n), hay O(log2(1000)) ≈ O(10)

Bài 2: Cho mảng A gồm N phần tử kiểu số nguyên (N <= 200). Viết chương trình nhập dữ liệu vào từ bàn phím cho mảng A. Sau đó thực hiện đếm số phần tử chia hết cho 3 của mảng A. Rồi hiển thị kết quả ra màn hình.Bài 3: Viết chương trình nhập vào từ bàn phím một dãy số gồm N số nguyên (N<=30). Sau đó tính tích các phần tử chia hết cho 2 của dãy số đó. Rồi hiển thị kết quả ra màn...
Đọc tiếp

Bài 2: Cho mảng A gồm N phần tử kiểu số nguyên (N <= 200). Viết chương trình nhập dữ liệu vào từ bàn phím cho mảng A. Sau đó thực hiện đếm số phần tử chia hết cho 3 của mảng A. Rồi hiển thị kết quả ra màn hình.

Bài 3: Viết chương trình nhập vào từ bàn phím một dãy số gồm N số nguyên (N<=30). Sau đó tính tích các phần tử chia hết cho 2 của dãy số đó. Rồi hiển thị kết quả ra màn hình.

Bài 4: Cho tệp văn bản ‘vidu.inp’ chứa giá trị của a và b. Biết rằng các giá trị này được phân cách nhau bởi một dấu cách. Viết chương trình thực hiện đọc dữ liệu từ tệp ‘vidu.inp’. Sau đó tính giá trị biểu thức S= a+2b. Rồi ghi giá trị của S ra tệp ‘vidu.out’

Bài 5: Viết chương trình thực hiện tính tổng sau:

S= 1+ 1/22+1/32+1/42+…+1/N2

4
28 tháng 4 2021

Bài 2:

Program HOC24;

var a: array[1..200] of integer;

i,d,n: integer;

begin

write('Nhap so phan tu N: '); readln(N);

for i:=1 to n do

begin

write('a[',i,']='); readln(a[i]);

end;

for i:=1 to n do if a[i] mod 3=0 then d:=d+1;

write('Co ',d,' phan tu chia het cho 3');

readln

end.

28 tháng 4 2021

Bài 3:

Program HOC24;

var a: array[1..30] of integer;

i,d,n: integer;

begin

write('Nhap so phan tu N: '); readln(N);

for i:=1 to n do

begin

write('a[',i,']='); readln(a[i]);

end;

d:=1;

for i:=1 to n do if a[i] mod 2=0 then d:=d*a[i];

write(Tich cac phan tu chia het cho 2 la: ',d);

readln

end.

18 tháng 7 2023

THAM KHẢO!

Chương trình trên tính tổng các giá trị i*(i+1) trong khoảng từ 0 đến n-1 và lưu kết quả vào biến s. Để xác định độ phức tạp thời gian của chương trình này, ta cần xem xét số lần lặp của vòng for và các phép toán trong vòng lặp.

Vòng for: Vòng lặp này chạy từ 0 đến n-1, với n là 1.000. Vậy số lần lặp là n, hay 1.000 lần.

Các phép toán trong vòng lặp:

Phép gán s = s + i*(i+1): Đây là phép gán giá trị vào biến s, có độ phức tạp là O(1).

Phép toán i*(i+1): Đây là phép nhân và cộng, có độ phức tạp là O(1).

Vậy tổng độ phức tạp thời gian của chương trình là O(n), hay O(1.000)

Bài 2: Thời gian làm việc của máy tính. N máy tính có số hiệu 1..N thực hiện N chương trình. Thời gian thực hiện chương trình của máy tính có số hiệu i là từ thời điểm thời gian ai đến thời điểm thời gian bi (1<N<=1000, ai, bi nguyên dương, ai<bi<=2000). Hãy xác định nhiều nhất các khoảng thời gian thực hiện chương trình của các máy tính sao cho không có thời điểm thời gian nào trùng nhau....
Đọc tiếp

Bài 2: Thời gian làm việc của máy tính.

N máy tính có số hiệu 1..N thực hiện N chương trình. Thời gian thực hiện chương trình của máy tính có số hiệu i là từ thời điểm thời gian ai đến thời điểm thời gian bi (1<N<=1000, ai, bi nguyên dương, ai<bi<=2000). Hãy xác định nhiều nhất các khoảng thời gian thực hiện chương trình của các máy tính sao cho không có thời điểm thời gian nào trùng nhau. Mỗi khoảng thời gian tìm được là chỉ bao gồm các thời điểm thời gian thực hiện chương trình của 1 máy tính.

Dữ liệu vào là tệp văn bản THOIGIAN.INP có cấu trúc:

- Dòng đầu tiên ghi số N

- N dòng tiếp theo ghi thời điểm thời gian bắt đầu và thời điểm thời gian kết thúc việc thực hiện chương trình của 1 máy tính (ghi cách nhau ít nhất là 1 ký tự trống). Thông tin về khoảng thời gian thực hiện chương trình của các máy tính được ghi tuần tự theo thứ tự tăng dần số hiệu của các máy tính đó.

Dữ liệu ra là tệp văn bản THOIGIAN.OUT có cấu trúc:

- Dòng đầu tiên ghi số lượng các khoảng thời gian tìm được.

- Các dòng tiếp theo ghi số hiệu của các máy tính có các khoảng thời gian tìm được. Mỗi số hiệu ghi trên 1 dòng và số hiệu của máy tính nào có khoảng thời gian với các thời điểm thời gian bắt đầu, thời điểm thời gian kết thúc chương trình nhỏ hơn thì được ghi trước.

Ví dụ:

THOIGIAN.INP

THOIGIAN.OUT

8

2 3

4 5

10 12

13 15

1 9

2 5

6 8

7 15

5

1

2

7

3

4

0
QT
Quoc Tran Anh Le
Giáo viên
9 tháng 11 2023

1. Tính số lần lặp của vòng lặp bên trong của thuật toán sắp xếp chèn tuyến tính.

2. Tính số lần lặp của vòng lặp ngoài của thuật toán sắp xếp chèn tuyến tính.

3. Ước lượng độ phức tạp thời gian của thuật toán sắp xếp chèn tuyến tính:

Vòng lặp for bên ngoài kiểm soát việc thực hiện đúng n-1 bước.

Vòng lặp while lồng bên trong thực hiện đồng thời cùng lúc hai việc a) và b) theo cách dịch chuyển dần từng bước sang trái, từ vị trí i tới vị trí k+1