Sort an Array in Descending Order

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 

 

 

Upvote
Downvote
Loading...

Input

5 10 3 5 2 7

Expected Output

10 7 5 3 2