排序算法-希尔排序(Shellsort)-C
2021/6/3 7:23:45
本文主要是介绍排序算法-希尔排序(Shellsort)-C,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
思路:
希尔排序又称缩小增量排序(diminishing increment sort),
首先选择一个增量序列(increment sequence),,其中,,
按增量序列的个数 t ,执行 t 趟排序;
对于每一趟排序,将 中的每一个位置i,把其上的元素放到中间的正确位置上,可以看出,对于一趟增量的排序,就是对个独立的子数组执行一次插入排序。
希尔排序一般的增量序列是,
时间复杂度:
平均,;最好, ;最坏 , (取决于选择的增量序列)
程序:
void shell_sort(int array[],int array_size) { int increment,i,j,tmp; for(increment=array_size/2;increment>0;increment/=2) { for(i=increment;i<array_size;i++) { tmp=array[i]; for(j=i;j-increment>=0 && tmp<array[j-increment];j-=increment) { array[j]=array[j-increment]; } array[j]=tmp; } } }
#include <stdio.h> int main() { int i; int array[]={100,96,88,75,63,52,41,36,28,19,6,0,-19,-105}; int array_size=sizeof(array)/sizeof(int); printf("Original array:\n"); for(i=0;i<array_size;i++) printf(" %d, ",array[i]); printf("\n"); shell_sort(array,array_size); printf("Sorted array:\n"); for(i=0;i<array_size;i++) printf(" %d, ",array[i]); printf("\n"); return 0; }
参考:
https://www.runoob.com/w3cnote/shell-sort.html
这篇关于排序算法-希尔排序(Shellsort)-C的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28pyqt 怎么打包整个项目-icode9专业技术文章分享
- 2024-09-28laravel Commands 创建带有参数的 Artisan 命令的步骤和示例-icode9专业技术文章分享
- 2024-09-28antd怎么实现渲染tiff图片-icode9专业技术文章分享
- 2024-09-28英文半角中划线和中文全角的中划线有什么区别-icode9专业技术文章分享
- 2024-09-28nvm npm 和node 他们之间有什么关系-icode9专业技术文章分享
- 2024-09-28Node Version Manager (nvm)使用教程-icode9专业技术文章分享
- 2024-09-28nvm命令太慢,是什么原因-icode9专业技术文章分享
- 2024-09-28Kotlin 如何增加、删除和修改 MutableStateFlow 中的值。-icode9专业技术文章分享
- 2024-09-28Kotlin的stateFlow.update 写法介绍-icode9专业技术文章分享
- 2024-09-28kotlin 怎么获取当前时间格式-icode9专业技术文章分享