Lý Minh Quân

Giới thiệu về bản thân

Chào mừng bạn đến với trang cá nhân của Lý Minh Quân
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
(Thường được cập nhật sau 1 giờ!)
Nguyên lý cơ bản: Ở mỗi bước, thuật toán sẽ tìm số nhỏ nhất trong phần chưa sắp xếp và đổi chỗ nó với phần tử đầu tiên của phần đó. Quá trình mô phỏng:

Bước

Dãy số hiện tại

Giải thích chi tiết

Bắt đầu

[

1

, 9, 2, 3, 4, 7, 6, 2]

Dãy ban đầu.

Bước 1

[

1

, 9, 2, 3, 4, 7, 6, 2]

Tìm số nhỏ nhất từ chỉ số 0 đến 7. Số nhỏ nhất là

 1

. Nó đã ở đúng vị trí đầu tiên. Không cần đổi chỗ.

Bước 2

[1,

 2

,

 9

, 3, 4, 7, 6, 2]

Tìm số nhỏ nhất từ chỉ số 1 đến 7. Số nhỏ nhất là

 2 

(tại vị trí cuối). Đổi chỗ

 2 

với

 9

.

Bước 3

[1, 2,

 2

, 3, 4, 7, 6,

 9

]

Tìm số nhỏ nhất từ chỉ số 2 đến 7. Số nhỏ nhất là

 2 

(tại vị trí cuối). Đổi chỗ

 2 

với số ở vị trí hiện tại (vốn là

 9 

sau bước trước).

Bước 4

[1, 2, 2,

 3

, 4, 7, 6, 9]

Tìm số nhỏ nhất từ chỉ số 3 đến 7. Số nhỏ nhất là

 3

. Nó đã ở đúng vị trí.

Bước 5

[1, 2, 2, 3,

 4

, 7, 6, 9]

Tìm số nhỏ nhất từ chỉ số 4 đến 7. Số nhỏ nhất là

 4

. Nó đã ở đúng vị trí.

Bước 6

[1, 2, 2, 3, 4,

 6

,

 7

, 9]

Tìm số nhỏ nhất từ chỉ số 5 đến 7. Số nhỏ nhất là

 6

. Đổi chỗ

 6 

với

 7

.

Bước 7

[1, 2, 2, 3, 4, 6,

 7

, 9]

Tìm số nhỏ nhất từ chỉ số 6 đến 7. Số nhỏ nhất là

 7

. Nó đã ở đúng vị trí.

Kết thúc

[

1, 2, 2, 3, 4, 6, 7, 9

]

Dãy đã được sắp xếp xong.


Tóm tắt đặc điểm:
  • Số lần lặp:   bước (với   là số phần tử).
  • **Độ phức tạp:**Luôn là   dù dãy đã sắp xếp hay chưa.
  • Ưu điểm: Số lần đổi chỗ (swap) ít hơn so với Sắp xếp Nổi bọt (Bubble Sort).
Bạn có muốn mình viết mã nguồn C++ hoặc Python để thực thi thuật toán này trên máy tính không?



1. Công thức tính
  • Thời gian thực máy A = (Tổng thời gian hoạt động máy A) - (Tổng thời gian khắc phục máy A)
  • Thời gian thực máy B = (Tổng thời gian hoạt động máy B) - (Tổng thời gian khắc phục máy B)
  • Tổng thời gian thực = Thời gian thực máy A + Thời gian thực máy B
2. Phân tích dữ liệu Input Dựa trên ví dụ của bạn (n = 5 ngày):
  • Máy A:
    • Thời gian hoạt động (a): 20, 20, 10, 21, 18
    • Thời gian tấn công (h): 20, 15, 11, 13, 13
  • Máy B:
    • Thời gian hoạt động (b): 23, 19, 17, 22, 12
    • Thời gian tấn công (f): 20, 14, 11, 13, 09
3. Bảng tính toán chi tiết

Ngày

A (Hoạt động)

A (Tấn công)

B (Hoạt động)

B (Tấn công)

1

20

20

23

20

2

20

15

19

14

3

10

11

17

11

4

21

13

22

13

5

18

13

12

09

Tổng

89

72

93

67

4. Kết quả cuối cùng
  • Thời gian thực máy A: 89 - 72 = 17 giờ
  • Thời gian thực máy B: 93 - 67 = 26 giờ
  • Tổng thời gian thực cả 2 máy: 17 + 26 = 43 giờ
(Lưu ý: Nếu kết quả của một máy trong ngày cụ thể bị âm - ví dụ thời gian khắc phục lớn hơn thời gian hoạt động - thông thường sẽ tính là 0 giờ hoạt động cho ngày đó. Tuy nhiên, theo cách tính tổng quát trên, kết quả cuối cùng là 43). Bạn có muốn viết một đoạn mã Python hoặc C++ để tự động hóa việc nhập dữ liệu và tính toán cho bài toán này không?


1. Công thức tính
  • Thời gian thực máy A = (Tổng thời gian hoạt động máy A) - (Tổng thời gian khắc phục máy A)
  • Thời gian thực máy B = (Tổng thời gian hoạt động máy B) - (Tổng thời gian khắc phục máy B)
  • Tổng thời gian thực = Thời gian thực máy A + Thời gian thực máy B
2. Phân tích dữ liệu Input Dựa trên ví dụ của bạn (n = 5 ngày):
  • Máy A:
    • Thời gian hoạt động (a): 20, 20, 10, 21, 18
    • Thời gian tấn công (h): 20, 15, 11, 13, 13
  • Máy B:
    • Thời gian hoạt động (b): 23, 19, 17, 22, 12
    • Thời gian tấn công (f): 20, 14, 11, 13, 09
3. Bảng tính toán chi tiết

Ngày

A (Hoạt động)

A (Tấn công)

B (Hoạt động)

B (Tấn công)

1

20

20

23

20

2

20

15

19

14

3

10

11

17

11

4

21

13

22

13

5

18

13

12

09

Tổng

89

72

93

67

4. Kết quả cuối cùng
  • Thời gian thực máy A: 89 - 72 = 17 giờ
  • Thời gian thực máy B: 93 - 67 = 26 giờ
  • Tổng thời gian thực cả 2 máy: 17 + 26 = 43 giờ
(Lưu ý: Nếu kết quả của một máy trong ngày cụ thể bị âm - ví dụ thời gian khắc phục lớn hơn thời gian hoạt động - thông thường sẽ tính là 0 giờ hoạt động cho ngày đó. Tuy nhiên, theo cách tính tổng quát trên, kết quả cuối cùng là 43). Bạn có muốn viết một đoạn mã Python hoặc C++ để tự động hóa việc nhập dữ liệu và tính toán cho bài toán này không?