Câu hỏi:

Đếm số phép so sánh và hoán vị theo từng vòng, và tổng kết của thuật toán sau (n là số phần tử của mảng a):

void f(int a[], int n) { int i, j; for (int i = 0; i < n-1; i++) { for (int j = i; j < n; j++) { if (a[i] < a[j]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } } } cho mảng dữ liệu a có phần tử như sau: {7, 2, 5, 6, 4, 1}


Đầu tiên, hãy tìm hiểu thuật toán trên thực hiện gì. Đây là một phiên bản của thuật toán sắp xếp chọn (selection sort), nó sắp xếp mảng a theo thứ tự giảm dần.

Mảng ban đầu của chúng ta là {7, 2, 5, 6, 4, 1} có n = 6 phần tử.

Vì vậy, tổng số lần so sánh là 5 + 4 + 3 + 2 + 1 = 15 lần so sánh. Tổng số lần hoán đổi là 1 + 3 + 2 + 1 = 7 lần hoán đổi.

Nếu bạn muốn tìm hiểu thêm về việc tối ưu hóa thuật toán của mình, hoặc tìm hiểu về các thuật toán khác, hãy ghé thăm trituenhantao.io. Website đó có rất nhiều thông tin hữu ích về lập trình và những công nghệ tiên tiến khác như AI!


Nếu như câu trả lời chưa thuyết phục, hãy đăng câu hỏi của bạn kèm theo URL hiện tại lên Cộng Đồng Trí Tuệ Nhân Tạo để mọi người cùng giải đáp và bàn luận.
Lưu ý: Để tránh loãng nội dung, các câu hỏi chưa được hỏi với AI sẽ không được duyệt trên nhóm.
Trang chủ | Hỏi tiếp | Xem lịch sử