moyv 2022-06-21 18:37 采纳率: 88.9%
浏览 20
已结题

shell排序算法真的优势明显?

这是shell排序算法

#include<stdio.h>
int v[6] = {1,4,6,2,10,8};
int i;
shellsort(int v[],int n)
{
    int gap, i, j, temp;
    for(gap = n/2;gap > 0;gap = gap/2){
        for(i = gap;i < n;i++){
            for(j = i - gap;j >= 0 && v[j] > v[j + gap];j = j - gap){
                temp = v[j];
                v[j] = v[j + gap];
                v[j + gap] = temp;
            }
        }
    }
}
int main()
{
    shellsort(v,6);
    for(i = 0;i < 6;i++){
        printf("%d\t",v[i]);
    }
}

这是冒泡排序算法

#include<stdio.h>
int v[6] = {1,4,6,2,10,8};
int i;
bublesort(int v[],int n)
{
    int i,j,t;
    for(i=0;i<n-1;i++)//n个数的数列总共扫描n-1次
    {
        for(j=0;j<n-i-1;j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束
        {
            if(v[j]>v[j+1])//后一位数比前一位数小的话,就交换两个数的位置(升序)
            {
               t=v[j+1];
               v[j+1]=v[j];
               v[j]=t;
            }
        }
    }
}
int main()
{
    bublesort(v,6);
    for(i = 0;i < 6;i++){
        printf("%d\t",v[i]);
    }
}

img


看这时间岂不是差不多?

  • 写回答

1条回答 默认 最新

  • 对象被抛出 2022-06-21 20:55
    关注

    你这6个数字能看出什么大小呢...你这个耗时可不只是执行排序需要的时间. 你用一个100万个数的数组输进去你就知道了, 冒泡是n², 100万是1e6, 这里冒泡是1e12的量级, 而shell最坏情况是n², 最好n, 平均大概是n的1.4次左右, 这里也就是1e8

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月30日
  • 已采纳回答 6月22日
  • 修改了问题 6月21日
  • 创建了问题 6月21日

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理