博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
希尔排序
阅读量:6717 次
发布时间:2019-06-25

本文共 2247 字,大约阅读时间需要 7 分钟。

希尔排序的时间复杂度,最好的情况下仍然是正序时,可达到O(n),平均复杂度为O(nlogn)。

算法思想:

  采用跳跃式处理数组,使得数组粗粒度的实现基本有序。在进行细粒度的处理,最终使得网络在跳越数为1时,实现基本有序的排序,以减少插入排序的复杂度。

主要程序:

void shellSort(int *arr,int length){    int i,j,k;    int increment = length;    while(increment>0){        if(increment != 1)            increment = increment/3+1;        else            break;        for(i = increment; i
=0 && k < arr[j] ; j-=increment){ arr[j+increment] = arr[j]; } arr[j+increment] = k; } } }}

全部代码:

#include 
#include
#include
int arrtest1[10] = {
3,4,7,8,0,9,1,2,6,5};int arrtest2[10] = {
0,1,2,3,4,5,6,7,8,9};int arrtest3[10] = {
9,8,7,6,5,4,3,2,1,0};void copy(int *from,int *arr,int length);void print(int *arr,int length);void shellSort(int *arr,int length);int main(){ clock_t start,end; int Arr[10]; int i; copy(arrtest1,Arr,10); print(Arr,10); shellSort(Arr,10); print(Arr,10); start = clock(); for(i=0;i<100000;i++){ copy(arrtest1,Arr,10); //print(Arr,10); shellSort(Arr,10); //print(Arr,10); } end = clock(); printf("first test:%d\n",end-start); start = clock(); for(i=0;i<100000;i++){ copy(arrtest2,Arr,10); //print(Arr,10); shellSort(Arr,10); //print(Arr,10); } end = clock(); printf("first test:%d\n",end-start); start = clock(); for(i=0;i<100000;i++){ copy(arrtest3,Arr,10); //print(Arr,10); shellSort(Arr,10); //print(Arr,10); } end = clock(); printf("first test:%d\n",end-start); getchar(); return 0;}void shellSort(int *arr,int length){ int i,j,k; int increment = length; while(increment>0){ if(increment != 1) increment = increment/3+1; else break; for(i = increment; i
=0 && k < arr[j] ; j-=increment){ arr[j+increment] = arr[j]; } arr[j+increment] = k; } } }}void copy(int *from,int *arr,int length){ int i; for(i=0;i

运行示例:

本文转自博客园xingoo的博客,原文链接:,如需转载请自行联系原博主。
你可能感兴趣的文章
美图T8s真机来了!电影人像和云端AI处理是亮点
查看>>
卑不谋尊,疏不谋戚
查看>>
Docker上的MySQL:MySQL容器的单主机网络
查看>>
阿里巴巴股价大涨市值超腾讯居亚洲第一
查看>>
360发布企业BYOD安全管理系统"360天机"
查看>>
容器网络概述
查看>>
使用C++和DirectX开发游戏GUI(三)
查看>>
我的WCF之旅(5):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的重载(Overloading)...
查看>>
Mellanox:一切以数据为中心 重构网络世界
查看>>
2013年首次亮相的RoboBee,如今却能”上天入海“
查看>>
在Docker里运行Ceph
查看>>
这里有一份面筋请查收(五)
查看>>
Java中的匿名对象
查看>>
最新发布:数据库防火墙技术市场调研报告
查看>>
AI如何为安防赋能?具体场景案例解析
查看>>
揭秘“史上最严高考”背后的高科技手段
查看>>
百分点:在线旅游阿里去啊购买转化最高
查看>>
“互联网+”改变传统教育模式
查看>>
阿里巴巴发布物联网平台:不止互动 更能互懂
查看>>
威胁情报工具:更快?更聪明?
查看>>