110. Sort an Array in Descending Order

Back To All Submissions
Previous Submission
Next Submission

Code

#include <stdio.h>
#include <stdint.h>

void bubble_sort_desc(uint8_t *arr, uint8_t n) {
    // Your logic here
    uint8_t i, j, localmax, hold;
    for (i=0; i < n-1; i++) {
        localmax= i; // top position
        for (j=i; j < n; j++) {
            if (arr[j] > arr[localmax]) {
                localmax = j;
            }
        }
        hold = arr[i];
        arr[i] = arr[localmax];
        arr[localmax] = hold;
    }
}

int main() {
    uint8_t n;
    scanf("%hhu", &n);
    uint8_t arr[100];

    for (uint8_t i = 0; i < n; i++) {
        scanf("%hhu", &arr[i]);
    }

    bubble_sort_desc(arr, n);

    for (uint8_t i = 0; i < n; i++) {
        printf("%hhu", arr[i]);
        if(i < n-1){
            printf(" ");
        }
    }

    return 0;
}

Solving Approach

start from top of array, find local max and place it on top

reduce the array now to start at index 1, repeat, and again 

 

 

Was this helpful?
Upvote
Downvote