首页 > 代码库 > 希尔排序
希尔排序
/* * 希尔排序(在具有几万组数据量排序时有较好的表现~) * 1.希尔排序的整体时间复杂度与增量序列的选取有关,目前没有统一的最优增量序列。 * 2.Sedgewick增量序列:{1,5,19,41,109,。。} 按照 9*4^i-9*2^i+1或4^i-3*2^i+1进行选取。 猜想时间复杂度: 平均:O(n^6/7) 最坏: O(n*4/3).. */ #include "iostream" using namespace std; int N = 10; int a[10] = { 3,2,1,5,7,6,9,8,2,0 }; void shellSort() { int si, d, p, i; int Sedgewick[] = { 929,505,209,41,19,5,1,0 }; for (si = 0; Sedgewick[si] >= N; si++); /* 初始的sedgeWick[si]不能超过排序数组的长度 */ for (d = Sedgewick[si]; d > 0; d = Sedgewick[++si]) for (p = d; p < N; p++) { /* 插入排序 */ int temp = a[p]; for (i = p; i >= d&& a[i - d] > temp; i -= d) a[i] = a[i - d]; a[i] = temp; } } void print() { for (int i = 0; i < N; i++) cout << a[i] << " "; cout << endl; } int main() { shellSort(); print(); }
希尔排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。