希尔排序
来源:互联网 发布:深圳市逻辑思维软件 编辑:程序博客网 时间:2024/06/04 18:39
希尔排序也属于插入排序的一种,但在时间效率上有较大改进。它的基本思想是:先设置一个增量,每次从左将相隔增量的位置的值有序,就是使用的插入法排序,然后将增量一步一步缩小,最后一步必须缩小到1。增量为n/2 n/4 n/8 ......1时的效率较高。
//shell 排序算法#include <iostream>#include <cstring>#include <cstdio>using namespace std;#define N 10005int shell[N];void shellsort(int *a, int len){ for(int gap=len/2; gap>0; gap--)//确定增量 { for(int j=gap; j<len; j++)//从增量开始一直往后遍历 { for(int k=j-gap; k>=0 && a[k]>a[k+gap]; k+=gap) //每次遍历间隔为gap,每次插入一个数,当比前面的数小,就交换 { swap(a[k], a[k+gap]) } } }}int main(){ int shell[] = {1,5,6,7,3,3,6,7,15,34,12,3,234,34}; //测试样例 shellsort(shell, 14); for(int i=0; i<14; i++) cout<<shell[i]<<" "; cout<<endl; return 0;}
0 0
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- UITextView添加占位符
- NYOJ---1241 - Distribution
- Oracle-25-having子句&连接的定义(如多表联查)
- 1013
- Redis内存使用优化与存储
- 希尔排序
- 哈夫曼树(POJ3253)
- 1.2.4 Linux的开发:虚拟团队的产生
- leetcode - Contains Duplicate
- [C语言][LeetCode][142]Linked List Cycle II
- Win7免安装Mysql 5.6.24版本
- 位操作运算符
- web结构
- 零零碎碎(摘抄)