直接插入排序法(含监视哨):
关于监视哨我一直以为它会被覆盖,丢值。以为在数组r[0]中当出现:r[0]=r[i]时,我的想法是r[0]不是有值吗?这样不就直接被丢失了吗?
解决办法:设置一个为r[9]大小的数组,而输入数字从r[1]开始,这样r[0],就空出来没有用,就可以作为监视哨了。
以下附上代码:
#include<stdio.h>
void main()
{int i,r[9];
int j;
for (i = 1; i <= 8; i++)
scanf_s(“%d”, &r[i]);
for (i = 2; i < 9; i++)
{
r[0] = r[i];
j = i - 1;
while (r[0] < r[j])
{
r[j + 1] = r[j];
j = j - 1;
}
r[j + 1] = r[0];
}
for (i = 1; i <9; i++)
printf(“%d”,r[i]);
}
注意输出的时候也是从1开始,因为r[0]是没有值的。
相同的方法其他监视哨也就可以解决了。(解决问题后好开心😊)
本文发布于:2024-01-28 18:53:40,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064392249529.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |