Sắp xếp mảng theo thứ tự giảm dần trong C/C++ – https://final-blade.com

Bài tập số 12 luyện tập về sắp xếp mảng theo thứ tự giảm dần trong lập trình C/C++. Bài toán sắp xếp luôn là bài toán hay cho người mới học lập trình.

1. Giới thiệu bài toán

Tiếp tục với thuật toán sáp xếp, ở bài tập trước tất cả chúng ta đã xử lý bài toán sắp xếp theo thứ tự tăng dần, ở bài này tất cả chúng ta sẽ sắp xếp nhưng sẽ theo thứ tự ngược lại .

Đề bài:

Viết hàm sắp xếp mảng a có n phần tử theo thứ tự giảm dần.

Đề bài ngắn gọn nhưng hay và rất đầy đủ ý. Bài toán sẽ giúp bạn nẵm vững hơn thuật toán sắp xếp quan trọng. Nếu hoàn toàn có thể, hãy tự giải nó mà không cần tìm hiểu thêm nhé !

2.Giải quyết bài toán

Bài toán nhu yếu người làm cần nắm tốt kỹ năng và kiến thức về vòng lặp ( for ), hiểu tốt một chút ít về phương pháp hoạt động giải trí của ngôn từ lập trình là hoàn toàn có thể giải được. Đây là bài toán ở mức trung bình .
Bài toán mang lại hiệu suất cao tư duy cực kỳ tốt .

2.2 Ý tưởng giải quyết bài toán

Ý tưởng giải bài toán này gần giống với bài toán sắp xếp theo thứ tự tăng dần và có khác đôi chút về điều kiện kèm theo .
Mình sẽ vẫn nhắc lại ý tưởng sáng tạo xử lý :

  • Sử dụng hai vòng for lồng nhau, một vòng i chạy từ 0 đến
  • Vòng for thứ 2 j chạy từ 0 đến <=i
  • So sánh a[j] với a[i]. Nếu a[j] nhỏ hơn a[i] tiến hành đổi chỗ.

Cuối cùng sẽ được mảng sắp xếp theo thứ tự giảm dần .
Thuật toán đổi chỗ :

  • Có hai cách đổi chỗ, cách thứ nhất dùng biến trung gian, cách này đơn giản hơn. (cách này ứng dụng vào sắp xếp nhiều thứ khác nhau)
  • Cách thứ 2 không dùng biến trung gian (cách này tối ưu hơn cách trên tuy nhiên chỉ áp dụng được với các con số)

2.2 Hàm sắp xếp các phần tử trong mảng theo thứ tự giảm dần trong C/C++

Hàm thứ nhất sử dụng biến trung gian :

//Ham sap xep thu nhat su dung bien trung gian
void SortUp(int a[], int n){
	int Mid;
	for(int i=0;i

Hàm thứ 2 không sử dụng biến trung gian:

//Ham sap xep thu 2 khong dung bien trung gian
void SortUp2(int a[], int n){
	for(int i=0;i

Các bạn có thể xem lại Bài 11: Sắp xếp mảng theo thứ tự tăng dần, mình có nói chi tiết hơn phần đổi chỗ.

2.3 Chương trình sắp xếp mảng theo thứ tự giảm dần bằng ngôn ngữ C/C++

Chúng ta cần thêm vào các cấu trúc mặc định của một chương trình C/C++ đồng thời thêm vào hàm nhập xuất mảng để làm việc với mảng.

Code C :
#include
void nhap(int a[], int &n){
	do{
		printf("Nhap n: ");
		scanf("%d",&n);
	}
	while(n<2||n>99);
	
	for(int i=0; iCode C + + :
#include
using namespace std;
void nhap(int a[], int &n){
	do{
		cout<<("Nhap n: ");
		cin>>n;
	}
	while(n<2||n>99);
	for(int i=0; i>a[i];
	}
}

void xuat(int a[], int n){
	for(int i=0;iKết quả khi bạn chạy chương trình :
sap xep mang theo thu tu giam dan trong C 2Kết quả thỏa mãn nhu cầu nhu yếu của đề bài đưa ra .
Bài san sẻ của mình đến đây là hết, cảm ơn bạn đã chăm sóc bài viết !

Xem tiếp bài 13: In ra các số nguyên tố có trong mảng

Xem lại bài 11: Sắp xếp mảng theo thứ tự tăng dần

Tải về 67 bài tập đề cương lập trình C/C++

Mọi thắc mắc trong khi tham khảo bài viết, bạn đọc đừng ngại để lại comment xuống phía dưới nhé!

Rất mong nhận được góp ý của các bạn để bài chia sẻ của mình hoàn thiện hơn!