dxskx 2015-12-27 15:33 采纳率: 25%
浏览 2029
已采纳

关于希尔排序的c代码问题

#include
#include

void xishu(int a[], int n)
{
int i, j;
int d = n / 2;
while(d > 0)
{
for (j = 0, i = d; i < n; i++,j++)
{
if (a[i] < a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
d = d / 2;
}
}

void main()
{
for (int i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
xishu(a, 10);
printf("\n");
for (int j = 0; j < 10; j++)
{
printf("%3d", a[j]);
}

system("pause");

}

这是我根据希尔排序思想自己写的程序,程序可以执行出来,但是为什么每次都是有一个数是乱的,其他都是有序的啊,求大神解答?

  • 写回答

2条回答 默认 最新

  • 琴无续弦 2015-12-27 17:45
    关注

    for (j = 0, i = d; i < n; i++,j++)
    {

            if (a[i] < a[j])
            {
                 int temp = a[i];
                 a[i] = a[j];
                 a[j] = temp;
            }
        }
        这里错了,只调换了2个数字而已,然而当你d=2的时候,每组都有5个数。
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程