您的位置:首页 > 运维架构 > Shell

【算法】Shell排序--C++源代码(VS2015)

2017-11-01 21:42 357 查看
#include <iostream>

#include <string.h>

using namespace std;

int interval[] = { 1,3,5,7,9 };

void Print(int* arr, int size)

{

    int i;

    for (i = 0; i < size; i++)

    {

        printf("%d ,", *(arr + i));

    }

    printf("\n");

}
/*

    相当于多个选择排序

*/

void ShellSort(int arr[], int size)

{

    int step, stepsp = sizeof(interval) / sizeof(int) - 1;

    int i, j, tmp;

    while (stepsp >= 0)

    {

        step = interval[stepsp--];

        for (i = step; i < size; i++)

        {

            tmp = arr[i];

            for (j = i; j >= step && arr[j - step] > tmp; j -= step)

            {

                arr[j] = arr[j - step];

            }

            arr[j] = tmp;

        }

    }

}

int main()

{

    int data[] = { 81,94,11,96,12,35,17,95,28,58,41,75,15 };

    int size = sizeof(data) / sizeof(int);

    ShellSort(data, size);

    Print(data, size);

    system("pause");

    return 0;

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