c++希尔排序从大到小怎么办

我只会从小大到大

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(){
    
    srand(time(0));
    int arr[100]={0};
    cout << "排序前" << endl;
    for (int i=0;i<100;i++){
        arr[i]=rand()%100+1;
        cout << arr[i]<<" ";
    }
    int begin = 0,end = 99;
    int d =(end-begin+1)/2;
    while (d>=1){
        for(int i=begin+d;i<=end;i++){
            int m=arr[i];
            int j=i-d;
            while(arr[j] > m && j >= begin){
                arr[j+d]=arr[j];
                j-=d;
            }
            arr[j+d]=m;
        }
        d=d/2;
    } 
    cout << endl << "排序后" << endl;
    for (int i = 0; i < 100; i++){
        cout << arr[i]<<" ";
    }
    
    return 0;
}

```

比较简单,自己尝试修改成动态输入获取排序来练手:

#include <iostream>
using namespace std;
void shellSort(int arr[], int n) {
    for (int gap = n / 2; gap > 0; gap /= 2) {
        for (int i = gap; i < n; i++) {
            int temp = arr[i];
            int j;
            for (j = i; j >= gap && arr[j - gap] < temp; j -= gap) {
                arr[j] = arr[j - gap];
            }
            arr[j] = temp;
        }
    }
}
int main() {
    int arr[] = { 12, 34, 54, 2, 3 };
    int n = sizeof(arr) / sizeof(arr[0]);
    shellSort(arr, n);
    cout << "排序好的: \n";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
    return 0;
}


求你们回答