您的位置:首页 > 理论基础 > 数据结构算法

【数据结构】希尔排序

2015-12-22 11:49 375 查看
对于一个int数组,请编写一个希尔排序算法,对数组元素排序。

给定一个int数组A及数组的大小n,请返回排序后的数组。保证元素小于等于2000。

测试样例:

[1,2,3,5,2,3],6

[1,2,2,3,3,5]

[code]#include<iostream>
#include<string>
using namespace std;

class ShellSort {
public:

    void display(int * A, int n){
        for (int i = 0; i < n; i++){
            printf("%d ", A[i]);
        }
        printf("\n");
    }
    void swap(int * A, int * B){
        int temp = *A;
        *A = *B;
        *B = temp;
    }

    int* shellSort(int* A, int n) {
        // write code here

        int step = 3;
        while (step > 0){
            for (int i = step; i < n; i++){
                int j = i;

                while (j >= step){
                    if (A[j] < A[j - step]){
                        swap(A + j, A + j - step);
                        j -= step;
                    }
                    else{
                        break;
                    }
                }//end while j
            }//end for

            step--;
        }
        return A;
    }

};

int main()
{
    ShellSort s;
    int A[] = { 54, 35, 48, 36, 27, 12, 44, 44, 8, 14, 26, 17, 28 };
    int n = 13;
    s.shellSort(A, n);
    s.display(A, n);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: