首页 > 系统服务 > 详细

ALGORITHM:Sort-ShellSort

时间:2020-05-14 01:56:10      阅读:76      评论:0      收藏:0      [点我收藏+]
#include "stdafx.h"
#include <iostream>

static void print(int arrayOld[], int n) {
    for (int i = 0; i < n; i++) {
        if (i == n - 1) {
            std::cout << arrayOld[i] << std::endl;
        } else {
            std::cout << arrayOld[i] << ",";
        }
    }
}
static void swap(int array[], int i, int j) {
    array[i] ^= array[j];
    array[j] ^= array[i];
    array[i] ^= array[j];
}

static void insertSortBySwap(int array[], int idxEnd, int gap) {
    while (idxEnd - gap >= 0 && array[idxEnd] < array[idxEnd - gap]) {
        swap(array, idxEnd, idxEnd - gap);
        idxEnd -= gap;
    }
}
static void insertSortByMove(int array[], int idxEnd, int gap) {
    int temp = array[idxEnd];
    while (idxEnd - gap >= 0 && temp < array[idxEnd - gap]) {
        array[idxEnd] = array[idxEnd - gap];
        idxEnd -= gap;
    }
    array[idxEnd] = temp;
}

static void shellSort(int array[], int n) {
    for (int gap = n >> 1; gap >= 1; gap = gap >> 1) {     // gap for each group
        for (int idxEach =  gap; idxEach < n; idxEach++) { // sort from
            insertSortByMove(array, idxEach, gap);
        }
    }
}

int _tmain(int argc, _TCHAR* argv[]) {
    int array[10] = { 8, 7, 9, 2, 5, 4, 1, 6, 0, 3 };
    int n = sizeof(array) / sizeof(array[0]);
    print(array, n);
    shellSort(array, n);
    print(array, n);

    getchar();
}

 

ALGORITHM:Sort-ShellSort

原文:https://www.cnblogs.com/xinyueliu/p/12886003.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!