Sắp xếp kết quả một môn học theo thứ tự giảm dần. Cái biên một hàm thực hiện thuật toán sắp xếp nào đó, ví dụ sắp xếp nhanh quicksort thành hàm quickSort_tuple_down để sắp xếp một danh sách các cặp (tên, điểm) theo thứ tự điểm giảm dần.
Trong bài 21, em đã được học cách triển khai thuật toán sắp xếp để sắp xếp các phần tử trong danh sách theo thứ tự tăng dần. Nếu cần sắp xếp theo thứ tự ngược lại thì câu lệnh so sánh tương ứng trong vòng lặp sẽ cần thay đổi như thế nào?
Nếu muốn sắp xếp danh sách theo thứ tự giảm dần thay vì thứ tự tăng dần, ta cần thay đổi câu lệnh so sánh trong vòng lặp của thuật toán sắp xếp. Cụ thể,cần đảo ngược dấu so sánh.
THAM KHẢO!Viết chương trình nhập vào mảng n với n nhập từ bàn phím, sắp xếp mảng theo thứ tự giảm dần?(mô tả thuật toán sắp xếp và minh họa cách sắp xếp mảng bằng 1 ví dụ mảng cụ thể).
#include <bits/stdc++.h>
using namespace std;
long long a[1000],i,n;
int main()
{
cin>>n;
for (i=1; i<=n; i++) cin>>a[i];
sort(a+1,a+n+1);
for (i=n; i>=1; i--) cout<<a[i]<<" ";
return 0;
}
viết chương trình thực hiện các yêu cầu sau:nhập vào một mảng gồm n phần tử,hiển thị danh sách các phần tử trong mảngvừa nhập,sắp xếp danh sách các phần tử lẽ trong mảng theo thứ tự giảm dần,hiển thị danh sách các phần tử trong mảng vừa được sắp xếp
hãy liệt kê các bước lặp của thuật toán sắp xếp nổi bọt để sắp xếp các số:10,9,7,106,8,21,20,14,15,16,10,23 theo thứ tự giảm dần?
Câu 24: Tìm câu sai trong các câu sau
A. Chỉ có thể sắp xếp dữ liệu theo cột trong đó các ô điều có cùng một kiểu dữ liệu
B. Có thể sắp xếp theo thứ tự tăng dần hoặc giảm dần
C. Để thực hiện được thao tác sắp xếp,vùng dữ liệu không nhất thiết phải có hàng tiêu đề
D. Để có kết quả sắp xếp đúng,các ô trong mỗi cột của vùng dữ liệu chỉ nên có cùng một kiểu dữ liệu
Viết chương trình nhập một dãy số từ bàn phím, các số cách nhau bởi dấu cách, thực hiện sắp xếp dãy đã nhập theo một trong các thuật toán sắp xếp rồi in kết quả ra màn hình.
# Nhập dãy số từ bàn phím
lst = list(map(int, input("Nhập dãy số cách nhau bởi dấu cách: ").split()))
# Sắp xếp dãy số theo thuật toán sắp xếp chọn
for i in range(len(lst)):
min_idx = i
for j in range(i+1, len(lst)):
if lst[j] < lst[min_idx]:
min_idx = j
lst[i], lst[min_idx] = lst[min_idx], lst[i]
# In kết quả ra màn hình
print("Dãy số đã sắp xếp:", lst)
Trên bảng dữ liệu ở Hình 2, em hãy thực hiện lần lượt các yêu cầu sau:
- Sắp xếp theo thứ tự tăng dần của cột Tốt.
- Sắp xếp theo thứ tự giảm dần của cột Sĩ số.
Hãy quan sát cách sắp xếp số lượng học sinh xếp loại tốt của các lớp có cùng sĩ số. Em hãy nhận xét về cách hiển thị dữ liệu trong bảng?
- Sắp xếp theo thứ tự tăng dần của cột Tốt
- Sắp xếp theo thứ tự giảm dần của cột Sĩ số
- Kết quả bảng dữ liệu được sắp xếp theo thứ tự trên một cột chính, nếu có nhiều dòng có giá trị khác nhau trên cột chính thì chúng sẽ được sắp xếp theo thứ tự trên cột phụ (khác với cột chính). Ví dụ, trong hoạt động trên, cột Sĩ số được coi là cột chính, cột Tốt là cột phụ. Do đó, cách sắp xếp số lượng học sinh xếp loại tốt của các lớp có cùng sĩ số theo thứ tự tăng dần của cột tốt.
Em đã biết thiết kế một số thuật toán và chương trình: tìm kiếm tuần tự, tìm kiếm nhị phân, sắp xếp chèn, sắp xếp chọn, sắp xếp nổi bọt. Tất cả các thiết kế chương trình đó có điểm nào chung?
Theo em, để thiết kế một thuật toán đúng giải một bái toàn cho trước cần trải qua các bước như thế nào? Nêu quan điểm của riêng em và trao đổi với các bạn.
- Các thuật toán và chương trình mà em đã biết đều là các thuật toán cơ bản trong lập trình và giải quyết các vấn đề thông thường. Các điểm chung của chúng bao gồm: Tính đơn giản, độ phức tạp thấp.
- Theo em, để thiết kế một thuật toán đúng giải một bái toàn cho trước cần trải qua các bước:
1. Xác định bài toán
2. Tìm cấu trúc dữ liệu biểu diễn thuật toán.
3. Tìm Thuật Toán.
4. Lập Trình (Programming)
5. Kiểm thử chương trình (Testing program)
6. Tối ưu chương trình (optimization program)
Cho dãy A= [5, 8, 1, 0, 10, 4, 3]. Viết các chương trình sắp xếp dãy A theo thứ tự tăng dần theo các thuật toán sắp xếp chèn, sắp xếp chọn và sắp xếp nổi bọt.
THAM KHẢO!
1.Thuật toán sắp xếp chèn (Insertion Sort):
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr
A = [5, 8, 1, 0, 10, 4, 3]
sorted_A = insertion_sort(A)
print("Dãy A sau khi sắp xếp chèn:", sorted_A)
2. Thuật toán sắp xếp chọn (Selection Sort):
def selection_sort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
A = [5, 8, 1, 0, 10, 4, 3]
sorted_A = selection_sort(A)
print("Dãy A sau khi sắp xếp chọn:", sorted_A)
3.Thuật toán sắp xếp nổi bọt (Bubble Sort):
def bubble_sort(arr):
n = len(arr)
for i in range(n - 1):
for j in range(n - 1 - i):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
A = [5, 8, 1, 0, 10, 4, 3]
sorted_A = bubble_sort(A)
print("Dãy A sau khi sắp xếp nổi bọt:", sorted_A)