排序算法之 —— 希尔排序(四)
来源:互联网 发布:ios10 连接网络 编辑:程序博客网 时间:2024/05/21 12:37
希尔排序算法
实质就是分组插入排序,也就是缩小增量排序
是插入排序的升级版
基本思想:将待排元素序列分为若干个子序列(由相隔
”增量gap“的元素组成),分别进行直接插入
排序,然后依次减小增量,再进行排序
#include<iostream>#include<stdio.h>#include<stdlib.h>#define len 10void Show(int str[],int length);void Shell_sort(int str[],int length);using namespace std;void Show(int str[],int length){ int i; for(i = 0;i <length ;i++) { printf(" %d",str[i]); }}void Shell_sort(int str[],int length) { int gap; int i; int j; for(gap = length/2;gap > 0;gap /= 2) { for(i = gap ; i < length ; i++ ) { for(j = i - gap;j>= 0 && str[j] > str[j + gap];j -= gap) { int temp ; temp = str[j]; str[j] = str[j + gap]; str[j+ gap] = temp; } } } }int main(){ int str[len]; int i ; for(i = 0; i < len; i++) { str[i] = rand()%100; } printf("排序前:\n"); Show(str,len); printf("\n"); printf("排序后:\n"); Shell_sort(str,len); Show(str,len); return 0;}运行结果:排序前: 41 67 34 0 69 24 78 58 62 64排序后: 0 24 34 41 58 62 64 67 69 78Press any key to continue
程序解读:
41 67 34 0 69 24 78 58 62 64
第一次: gap = 10/ 2 = 5
41 67 34 0 69 24 78 58 62 64
24 41
67 78
34 58
0 62
64 69
整理后:
24 67 34 0 64 41 78 58 62 69
第二次: gap = 5 /2 = 2
24 67 34 0 64 41 78 58 62 69
24 34 62 64 78
0 41 58 67 69
整理后:
24 0 34 41 62 58 64 78 69
第三次 : gap = 2 /2 = 1
0 24 34 41 58 62 64 69 78
- 排序算法之 —— 希尔排序(四)
- 排序算法四——希尔排序
- 算法学习之排序算法(四)(希尔排序)
- 蛙步学排序算法之四 - 希尔排序
- 【算法-排序之四】希尔排序
- 【算法-排序之四】希尔排序
- java算法之四希尔排序(插入排序)
- 排序算法总结(四)希尔排序
- 排序算法(四)希尔排序
- 排序算法(四)希尔排序
- 排序算法(四)- 希尔排序
- 排序算法(四) 希尔排序
- 基本排序方法之四——希尔排序
- 【算法之家】——希尔排序
- 【数据结构和算法】排序算法之四:希尔排序
- 基础算法之四--排序:之希尔排序
- 排序算法之希尔排序(Shellsort)
- 排序算法之希尔排序(ShellSort)
- linux使用小技巧
- 表达式转型注意事项
- jzoj 1589. 【普及模拟】洗牌
- eclipse构建maven web项目
- hive与HBase整合
- 排序算法之 —— 希尔排序(四)
- Linux蓝牙系统(3) Linux 命令
- windows程序设计学习笔记-图元文件
- HDFS append: Failed to close file /sys/global/log/sys_20160716.log. Lease recovery is in prog
- 十分推荐的一篇关于CSS浮动的博文
- Vux使用心得
- 欢迎使用CSDN-markdown编辑器
- Html初学之路02
- sublime text3快速生成svg相关结构