问一个 数据结构菜鸟级的问题。。谢谢

youlingsxcn 2008-09-10 04:15:39
数据结构里的排序算法 是不是写好以后都像 冒泡排序一样。改一个大于小于号 就能控制是从小到大排序 或者从大到小排序?!

#include<stdio.h>
int main(void)
{
int i,j;
int a[7]={0,5,7,4,6,2,1};
for(i=1;i<7;i++)
{
if(a[i]<a[i+1])
{
a[0]=a[i];
a[i+1]=a[i];
for(j=i-1;a[j]>a[0];j--)
a[j+1]=a[j];
a[j+1]=a[0];
}
}
for(i=1;i<7;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
getch();
return 0;
}

我这样写了一个 “直接插入排序” 可是不能像 冒泡排序一样 改一个大于小于号就可以改变排序顺序,

哪里有不对的 帮忙指出 谢谢各位CSDn的大虾。。由于C语言数组 从0开始,特此将a[0]=0. 从a[1]开始到a[n]排序。。。。
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
youlingsxcn 2008-09-12
  • 打赏
  • 举报
回复
我是一步步还原了 书上的算法。。原来楼上还有更简单的 终于能初步~感觉到 直接插入的算法过程了
  • 打赏
  • 举报
回复
还改什么顺序啊?你这段代码本来就不正确,不能正常完成排序。
glorey 2008-09-11
  • 打赏
  • 举报
回复
这样子是对的,可是写的挺复杂的,可是这样子更加简单一些:)
#include <stdio.h>
int main(void)
{
int i,j;
int a[7]={0,5,7,4,6,2,1};
for(i=1;i <7;i++)
{
a[0] = a[i];
for(j=i-1; a[j]>a[0] && j> 0; j--)
{
a[j+1]=a[j];
}
a[j+1] = a[0];
}
for(i=1;i <7;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
return 0;
}
youlingsxcn 2008-09-11
  • 打赏
  • 举报
回复
晕了 。。确实是。。。程序贴错了

下边这个 对不对啊?!



#include <stdio.h>
int main(void)
{
int i,j;
int a[7]={0,5,7,4,6,2,1};
for(i=1;i<7;i++)
{
if(a[i] >a[i+1])
{
a[0]=a[i+1];
a[i+1]=a[i];
for(j=i-1;a[j]>a[0];j--)
a[j+1]=a[j];
a[j+1]=a[0];
}
}
for(i=1;i <7;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
getch();
return 0;
}
youlingsxcn 2008-09-10
  • 打赏
  • 举报
回复
我不知道你试过么。。但是我改过,不行。。所以我才困惑!
江城老温 2008-09-10
  • 打赏
  • 举报
回复
if(a[i] <a[i+1])
改这里的判断,可以调整大小顺序.

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧