Câu hỏi. Viết chương trình trong C để đọc một mảng chứa n phần tử và sắp xếp mảng này theo thứ tự giảm dần bằng hàm do người dùng xác định và hiển thị mảng đã sắp xếp từ hàm chính
Mã nguồn C. Sắp xếp mảng theo thứ tự giảm dần (Hàm do người dùng xác định)
#include /* Function prototype */ void desc_sort(int a[100], int n); void main() { int a[100], i, n; printf("Enter n:\n"); scanf("%d", &n); /* Reading array */ for(i=0;i< n;i++) { printf("a[%d]=",i); scanf("%d", &a[i]); } /* Function Call */ desc_sort(a,n); /* Displaying sorted array */ printf("Array in descending order is:\n"); for(i=0;i< n;i++) { printf("%d\t", a[i]); } return 0; } /* Function definition for desc_sort */ void desc_sort(int a[10], int n) { int i, j, temp; for(i=0;i< n-1;i++) { for(j=i+1;j< n;j++) { if(a[i]< a[j]) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } } }Chương trình C này dùng để sắp xếp các phần tử của một mảng theo thứ tự giảm dần. Ví dụ: nếu một mảng a bao gồm các phần tử a={7,8,12,3} , thì khi sắp xếp theo thứ tự giảm dần, chúng ta sẽ nhận được a={12,8,7,3}
Hợp lý
Chúng tôi sử dụng hai vòng lặp for, vòng lặp for bên ngoài để duyệt qua tất cả các phần tử và vòng lặp for (lồng nhau) bên trong để so sánh phần tử với tất cả các phần tử bên trong và sau đó thực hiện thao tác hoán đổi
CHỈNH SỬA Tất nhiên, bây giờ yêu cầu đã thay đổi từ nhiệm vụ chung là xóa một mảng thành đặt lại hoàn toàn một chuỗi, bộ nhớ là quá mức cần thiết và chỉ cần xóa phần tử đầu tiên là đủ (như đã lưu ý trong các câu trả lời khác)
Các vòng lặp for lặp lại mảng các phần tử và sau đó câu lệnh if so sánh phần tử đầu tiên của một mảng với tất cả các phần tử khác, phần tử thứ hai của một mảng với các phần tử khác, v.v., để in thứ tự giảm dần của một mảng
Chương trình này sẽ cài đặt một mảng một chiều có kích thước cố định, chứa một số số ngẫu nhiên, sau đó sẽ sắp xếp tất cả các phần tử đã điền của mảng
Giải pháp vấn đề
1. Tạo một mảng có kích thước cố định (dung lượng tối đa), giả sử 10.
2. Lấy n, một biến lưu số lượng phần tử của mảng, nhỏ hơn dung lượng tối đa của mảng.
3. Lặp qua vòng lặp for để lấy các phần tử mảng làm đầu vào và in chúng.
4. Các phần tử của mảng chưa được sắp xếp, để sắp xếp chúng, hãy tạo một vòng lặp lồng nhau.
5. Trong vòng lặp lồng nhau, mỗi phần tử sẽ được so sánh với tất cả các phần tử bên dưới nó.
6. Trường hợp phần tử nhỏ hơn phần tử đứng bên dưới thì đổi chỗ cho nhau
7. Sau khi thực hiện xong vòng lặp lồng nhau ta sẽ thu được một mảng sắp xếp các phần tử theo thứ tự giảm dần.
Chương trình/Mã nguồn
Đây là mã nguồn của chương trình C để sắp xếp mảng theo thứ tự giảm dần. Chương trình được biên dịch và thử nghiệm thành công bằng trình biên dịch Turbo C trong môi trường windows. Đầu ra chương trình cũng được hiển thị bên dưới
Làm cách nào để sắp xếp một Mảng theo thứ tự giảm dần bằng STL trong C++?
Cải thiện bài viết
Lưu bài viết
Thích bài viết
- Độ khó. Trung bình
- Cập nhật lần cuối. 28 tháng 7 năm 2022
Cải thiện bài viết
Lưu bài viết
Cho một mảng arr[], hãy sắp xếp mảng này theo thứ tự giảm dần bằng cách sử dụng STL trong C++. Ví dụ
Input: arr[] = {1, 45, 54, 71, 76, 12} Output: {76, 71, 54, 45, 12, 1} Input: arr[] = {1, 7, 5, 4, 6, 12} Output: {12, 7, 6, 5, 4, 1}Khuyến khích. Vui lòng thử cách tiếp cận của bạn trên {IDE} trước, trước khi chuyển sang giải pháp
Tiếp cận. Việc sắp xếp có thể được thực hiện với sự trợ giúp của hàm sort() được cung cấp trong STL. cú pháp
sort(arr, arr + n, greater<T>());CPP
sort(arr, arr + n, greater<T>());4
sort(arr, arr + n, greater<T>());5
sort(arr, arr + n, greater<T>());6
sort(arr, arr + n, greater<T>());7
sort(arr, arr + n, greater<T>());8 sort(arr, arr + n, greater<T>());9 sort(arr, arr + n, greater<T>());0
sort(arr, arr + n, greater<T>());0 sort(arr, arr + n, greater<T>());1
sort(arr, arr + n, greater<T>());2
sort(arr, arr + n, greater<T>());3____24
sort(arr, arr + n, greater<T>());3____20 sort(arr, arr + n, greater<T>());7
sort(arr, arr + n, greater<T>());3____29
sort(arr, arr + n, greater<T>());3_______20 Input: arr[] = {1, 45, 54, 71, 76, 12} Output: {76, 71, 54, 45, 12, 1} Input: arr[] = {1, 7, 5, 4, 6, 12} Output: {12, 7, 6, 5, 4, 1}52____153Input: arr[] = {1, 45, 54, 71, 76, 12} Output: {76, 71, 54, 45, 12, 1} Input: arr[] = {1, 7, 5, 4, 6, 12} Output: {12, 7, 6, 5, 4, 1}54Input: arr[] = {1, 45, 54, 71, 76, 12} Output: {76, 71, 54, 45, 12, 1} Input: arr[] = {1, 7, 5, 4, 6, 12} Output: {12, 7, 6, 5, 4, 1}53Input: arr[] = {1, 45, 54, 71, 76, 12} Output: {76, 71, 54, 45, 12, 1} Input: arr[] = {1, 7, 5, 4, 6, 12} Output: {12, 7, 6, 5, 4, 1}56
sort(arr, arr + n, greater<T>());3____158
sort(arr, arr + n, greater<T>());3______340sort(arr, arr + n, greater<T>());41sort(arr, arr + n, greater<T>());42
sort(arr, arr + n, greater<T>());3______344 sort(arr, arr + n, greater<T>());45____20 sort(arr, arr + n, greater<T>());47
sort(arr, arr + n, greater<T>());48sort(arr, arr + n, greater<T>());49sort(arr, arr + n, greater<T>());50sort(arr, arr + n, greater<T>());42
sort(arr, arr + n, greater<T>());3____353
sort(arr, arr + n, greater<T>());3______355sort(arr, arr + n, greater<T>());0sort(arr, arr + n, greater<T>());57
sort(arr, arr + n, greater<T>());3____359
sort(arr, arr + n, greater<T>());3______340sort(arr, arr + n, greater<T>());62sort(arr, arr + n, greater<T>());42
sort(arr, arr + n, greater<T>());3______344 sort(arr, arr + n, greater<T>());45____20 sort(arr, arr + n, greater<T>());47
sort(arr, arr + n, greater<T>());48sort(arr, arr + n, greater<T>());49sort(arr, arr + n, greater<T>());50sort(arr, arr + n, greater<T>());42
sort(arr, arr + n, greater<T>());3______374 sort(arr, arr + n, greater<T>());75
sort(arr, arr + n, greater<T>());76
đầu ra. Input: arr[] = {1, 45, 54, 71, 76, 12} Output: {76, 71, 54, 45, 12, 1} Input: arr[] = {1, 7, 5, 4, 6, 12} Output: {12, 7, 6, 5, 4, 1}5
Độ phức tạp về thời gian. O(Nlog(N)) trong đó N là kích thước của mảng.
Không gian phụ. Ô(1)
Ghi chú cá nhân của tôi arrow_drop_up
Tiết kiệm