Câu hỏi:
12/07/2024 141Em hãy thực hiện các công việc sau:
a) Sửa lại thủ tục phân đoạn đề có hàm quickSort_ down sắp xếp theo thứ tự giảm dần.
Gợi ý. Sửa đối phép so sánh trong câu lệnh 1f a[3] <= pivot: thành 1f a[3]} >= pivot:
b) Tiếp tục sửa lại để có hàm quickSort_tuple down sắp xếp danh sách
các cặp. ví dụ (tên học sinh, điểm môn học) theo điệm môn học giảm dần.
Gợi y: Sửa đổi đầu vào thành danh sách các cặp (tên học sinh, điểm môn học) và thực hiện so sánh theo điểm môn học.
Sách mới 2k7: 30 đề đánh giá năng lực DHQG Hà Nội, Tp. Hồ Chí Minh, BKHN 2025 mới nhất (chỉ từ 110k).
Quảng cáo
Trả lời:
a)Gợi ý
void swap(int *a,int *b){
int temp=*a;
*a=*b;
*b=temp;
}
void bubblesort(int arr[],int n){
for(int i=0; i<n-1; i++){
for(int j=0; j<n-i-1; j++){
if(arr[j]>arr[j+1]){
swap(&arr[j],&arr[j+1]);
}
}
}
}
b) Gợi ý
void quickSort(int a[], int l, int r){
int p = a[(l+r)/2];
int i = l, j = r;
while (i < j){
while (a[i] < p){
i++;
}
while (a[j] > p){
j--;
}
if (i <= j){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}
if (i < r){
quickSort(a, i, r);
}
if (l < j){
quickSort(a, l, j);
}
}
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Dựa trên mã giả thuật toán phân đoạn Lomuto cho trong Hình 2, em hãy:
1. Mô tả diễn biến từng bước thực hiện phân đoạn Lomuto khi đầu vào là dãy 6 số nguyên tăng dần, ví dụ {1,2,3,4,5,6}
2. Tính số phép toán sơ cấp thực hiện phân đoạn Lomuto khi đầu vào là dãy tăng dần.
Câu 2:
Em hãy giải thích tại sao lại nói thuật toán sắp xếp nhanh (QuickSort) theo chiến lược “chia đề trị”.
Câu 3:
Theo em thì diễn biến từng bước sắp xếp nhanh một dãy số cụ thể dùng phân đoạn Lomuto sẽ giống hay sẽ khác với dùng phân đoạn Hoare?
Câu 4:
Viết chương trình thực hiện sắp xếp nhanh một dãy số và chạy thử kiểm tra.
a) Dựa trên mã lệnh thuật toán cho trong Hình 3.
b) Dựa trên mã lệnh thuật toán cho trong Hình 5.
Câu 5:
Bổ sung thêm các câu lệnh in kết quả trung gian vào các chương trình nói trên để có thể quan sát diễn biến từng bước thực hiện sắp xếp nhanh một dãy số.
Câu 6:
Nếu cần chọn một trong hai việc sau đây, em sẽ chọn việc làm nào? Vì sao?
1. Từ mô tả thuật toán bằng liệt kê các bước, viết chương trình Phython thực hiện thuật toán.
2. Từ chương trình Phython thực hiện thuật toán, viết lại ngắn gọn ý tưởng chính của thuật toán.
Đề thi cuối học kì 1 Tin học 11 Kết nối trí thức có đáp án (Đề 3)
Đề thi cuối học kì 1 Tin học 11 Kết nối trí thức có đáp án (Đề 1)
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 11 có đáp án
Đề thi cuối học kì 1 Tin học 11 Kết nối trí thức có đáp án (Đề 2)
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 10 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 12 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 13 có đáp án
Đề thi cuối kì 1 môn Tin học lớp 11 Cánh diều có đáp án (Đề 1)
về câu hỏi!