首页 > 代码库 > 希尔排序
希尔排序
算法:
1、先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。
2、所有距离为d1的倍数的记录放在同一个组中,在各组内进行直接插入排序。
3、取第二个增量d2<d1重复上述的分组和排序,
4、直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。
03.int main() 04.{ 05. const int n = 5; 06. int i, j, temp; 07. int gap = 0; 08. int a[] = {5, 4, 3, 2, 1}; 09. while (gap<=n) 10. { 11. gap = gap * 3 + 1; 12. } 13. while (gap > 0) 14. { 15. for ( i = gap; i < n; i++ ) 16. { 17. j = i - gap; 18. temp = a[i]; 19. while (( j >= 0 ) && ( a[j] > temp )) 20. { 21. a[j + gap] = a[j]; 22. j = j - gap; 23. } 24. a[j + gap] = temp; 25. } 26. gap = ( gap - 1 ) / 3; 27. } 28. }
希尔排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。