排序 希爾排序(Shell Sort)

2021-07-10 03:31:16 字數 1150 閱讀 4343

希爾排序

該方法的基本思想是:先將整個待排元素序列分割成若干個子串行(由相隔某個「增量」的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。因為直接插入排序在元素基本有序的情況下(接近最好情況),效率是很高的,因此希爾排序在時間效率上比o(n^2)有較大提高

時間複雜度

:增量h1 = 1, h(i+1) = 3hi + 1,o(n^1.25);

穩定性:不是穩定的排序 例項

對希爾演算法完整描述如下

templatevoid shellsort(t data, int n)

data[k] = temp;}}

}}

希爾演算法簡潔版

templatevoid shellsort(t data, int n)

data[j] = temp;

} }}

例子

// shellsort.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include using namespace std;

/*//希爾演算法簡潔版

templatevoid shellsort(t data, int n)

data[j] = temp;

} }}*/

//希爾演算法完整描述

templatevoid shellsort(t data, int n)

data[k] = temp;}}

}}templatevoid sprint(t data, int n)

cout << endl;

}int _tmain(int argc, _tchar* argv)

;// int arr = ;

int n = sizeof(arr) / sizeof(int);

shellsort(arr, n);

sprint(arr, n);

return 0;

}

希爾排序(Shell Sort)

希爾排序 shell sort 又叫做縮小增量排序 diminishing increment sort 是一種很優秀的排序法,演算法本身不難理解,也很容易實現,而且它的速度很快。基本思想 先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同乙個組中...

希爾排序 shellsort

希爾排序 shellsort 又叫增量遞減 diminishing increment 排序,是由d.l.shell發明的,這個演算法是通過乙個逐漸減小的增量使乙個陣列逐漸趨近於有序從而達到排序的目的。假設有乙個陣列int data 16 首先將這個增量設為16 2 8,這樣就將這個陣列分成了8個子...

希爾排序(ShellSort)

希爾排序 shellsort cpp view plain copy include shellsort.h include print.h 希爾排序,分組進行插入排序,最後一步仍然是插入排序,但是因為之前的操作使逆序數減少,所以相對單純的插入排序效率高。void shellsort inta,in...