Sắp xếp mảng giảm dần C++

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
  • Bàn luận
  • khóa học
  • Luyện tập
  • Băng hình
  • 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____153
    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}
    54
    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}
    53
    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}
    56

     

    sort(arr, arr + n, greater<T>());
    3____158

    sort(arr, arr + n, greater<T>());
    3______340
    sort(arr, arr + n, greater<T>());
    41
    sort(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>());
    48
    sort(arr, arr + n, greater<T>());
    49
    sort(arr, arr + n, greater<T>());
    50
    sort(arr, arr + n, greater<T>());
    42

     

    sort(arr, arr + n, greater<T>());
    3____353

    sort(arr, arr + n, greater<T>());
    3______355
    sort(arr, arr + n, greater<T>());
    0
    sort(arr, arr + n, greater<T>());
    57

     

    sort(arr, arr + n, greater<T>());
    3____359

    sort(arr, arr + n, greater<T>());
    3______340
    sort(arr, arr + n, greater<T>());
    62
    sort(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>());
    48
    sort(arr, arr + n, greater<T>());
    49
    sort(arr, arr + n, greater<T>());
    50
    sort(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

    Vui lòng Đăng nhập để nhận xét.

    Làm cách nào để sắp xếp một mảng giảm dần trong C?

    Chương trình C sắp xếp mảng theo thứ tự giảm dần .
    Tạo một mảng có kích thước cố định (dung lượng tối đa), giả sử 10
    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
    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

    Hàm nào sắp xếp mảng theo thứ tự giảm dần?

    sort() - sắp xếp mảng theo thứ tự tăng dần. rsort() - sắp xếp mảng theo thứ tự giảm dần.

    Làm cách nào để in thứ tự tăng dần và giảm dần trong C?

    Bài tập C. Tìm thứ tự Tăng dần hoặc Giảm dần từ một cặp số .
    Giải pháp mẫu
    C Code: #include int main () { int a, b; printf("Input two pairs values (integer values):\n"); scanf("%d %d", &a, &b); if (a != b) { if (b > a) { printf("Ascending order\n"); } else { printf("Descending order\n"); } } }.

    Loại nào là tốt nhất cho thứ tự giảm dần?

    Cho một mảng gồm n số nguyên, chúng ta phải sắp xếp đảo ngược các phần tử mảng sao cho các khóa bằng nhau ổn định sau khi sắp xếp .