Click here to Skip to main content
15,395,877 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
Shellsort must be performed on the letters / keys «THANK» <pre>

I can run this code using this function and get the result but
doing shell sort in math , looks like more complicated.

for each time the inner front loop is finished (ie right after: a [j] = value;): (we have this function below)

I should write the array and write the values of 'h' (4 and 1) and 'i' during the sorting.
Highlight in particular the keys that have been involved in the sorting.

What I have tried:


void shellSort(char arr[], const int n) {
    int  i, j, h;                                          //  Loop variables
    char value;                                           //The value / element that may need to be moved backwards in the subarray
    for (h = 1;  h <= n/9;  h = (3*h)+1)  ;             // NB: Empty for-loop
    char character;
    while (h > 0)  {                                    //  there are subarrays

        for (i = h+1;  i < n;  i++) {                  // Goes through the subarrays:
           value = arr[i];                           // The one that may be moved within the subarray.
            j  = i;                                   // Initiates to current item.
            while (j > h  &&  arr[j-h] > value) {
                arr[j] = arr[j-h];                   // Moves it up 'h' places.
                j -= h;                              // Index becomes the 'h' places further down
            arr[j] = value;                           // Slips into place where 'j' has stopped
                             cout << "\n\nH = " << h << " IS FINISHED!!\n\n";
                            cin >> character;
        h /= 3;                                          // 'h' is reduced to one-third for each loop.
Updated 5-Oct-21 23:57pm
Rick York 6-Oct-21 22:30pm
Do you have a question?

1 solution

While we are more than willing to help those that are stuck, that doesn't mean that we are here to do it all for you! We can't do all the work, you are either getting paid for this, or it's part of your grades and it wouldn't be at all fair for us to do it all for you.

So we need you to do the work, and we will help you when you get stuck. That doesn't mean we will give you a step by step solution you can hand in!
Start by explaining where you are at the moment, and what the next step in the process is. Then tell us what you have tried to get that next step working, and what happened when you did.

If you are having problems getting started at all, then this may help: How to Write Code to Solve a Problem, A Beginner's Guide[^]

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900