排序算法--Shell排序
2014-01-05 21:40
190 查看
#include <stdlib.h> template <typename T> static void ShellSubSort(T iData[], size_t iBegin, size_t iEnd, size_t n) { if (iEnd < iBegin + n) return; size_t iCurPos = iBegin+n; T iCurValue; size_t p = 0; while (iCurPos <= iEnd) { iCurValue = iData[iCurPos]; p = iCurPos-n; while (p >= iBegin && iData[p] > iCurValue) { iData[p+n] = iData[p]; p -= n; } iData[p+n] = iCurValue; iCurPos += n; } return; } template <typename T> void ShellSort(T iData[], size_t iBegin, size_t iEnd) { //当iSteps[1] = {1}时,就退化为插入排序 int iSteps[3] = {5,3,1}; for (size_t i = 0; i < sizeof(iSteps)/sizeof(int); i++) ShellSubSort(iData, iBegin, iEnd, iSteps[i]); return; }
相关文章推荐
- java算法(一)——排序算法(下)之 shell排序
- 基本排序算法(1)—插入排序及其变形shell排序
- 用Python实现基本排序算法04——Shell排序
- 排序算法——shell排序
- Java实现-高效排序算法之Shell排序
- 排序算法(插入排序、shell排序、冒泡排序、选择排序、合并排序、堆排序、快速排序、计数排序、基数排序、桶排序)
- 排序算法---Shell排序
- 排序算法——shell排序
- C语言实现基本排序算法----排序(直接插入排序,SHELL排序,冒泡排序,快速排序,简单选择排序,堆排序)
- Java排序算法(七):希尔排序(Shell排序)
- 排序算法总结之快速排序、归并排序、shell排序
- 排序算法门外汉理解-Shell排序
- Java排序算法:希尔排序(Shell排序)
- 排序算法--插入排序(直接插入排序、折半插入、shell排序)的java实现
- 排序算法(Java实现):Shell排序和归并排序
- 排序算法(四)-Shell排序
- 排序算法之shell排序
- 程序猿找工作必练内功:排序算法大总结(六)——shell排序
- 排序算法之shell排序
- 排序算法总结-Shell排序、归并排序、快排、堆排