插入算法问题

kkh30 2009-09-27 01:02:42
#include <stdio.h>
void main (){
int n = getchar()-'0';/*先输入数组大小,实验算法所以就不用动态了*/
int a[n],i;
char c;
for(i=0;i<=n-1&&(c=getchar())!=EOF;i++)/*数组初始化*/
a[i]=c-'0';
void insertionsort (int* b){
int j,key,i;
for(j=1;j<=n-1;j++)
key=b[j];
i=j-1;
while(b[i] > key && i > 0)
b[i+1]=b[i];
i--;
b[i+1]=key;
for(i = 0;i<=n-1;i++)
printf("%d",b[i]);
printf("\n");
}
insertionsort(a);
这是我根据书上的伪代码,输入的数字原样输出,是不是因为参数传递有问题呀,各位帮帮忙
...全文
60 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlwaysSLH 2009-09-27
  • 打赏
  • 举报
回复
突出提几点:
1,函数是绝对不可以定义到函数内部的,insertionsort要在main外边定义。
2,int a[n];这样的变长数组在c里是不允许的,要在堆上分配。
3,insertionsort函数需要接收一个参数以指定数组大小。
4,for或while的循环体是紧跟其后的一个语句块,所以有多条语句的话是一定要用{}括起来的。
AlwaysSLH 2009-09-27
  • 打赏
  • 举报
回复
格式没改,重发一下:

#include"stdio.h"
#include"stdlib.h"

void insertionsort (int* b,int n){
int j,key,i;
for(j=1;j <=n-1;j++)
{
key=b[j];
i=j-1;
while(b[i] > key && i >= 0)
{
b[i+1]=b[i];
i--;
}
b[i+1]=key;
}
for(i = 0;i <=n-1;i++)
printf("%d",b[i]);
printf("\n");
}

void main (){
int n = getchar()-'0';/*先输入数组大小,实验算法所以就不用动态了*/
int i;
int *a = malloc(sizeof(int) * n);
char c;
for(i=0;i <=n-1&&(c=getchar())!=EOF;i++)/*数组初始化*/
a[i]=c-'0';
insertionsort(a, n);
system("pause");
}
AlwaysSLH 2009-09-27
  • 打赏
  • 举报
回复
问题比较多,改了一下,凑合能用了
#include"stdio.h"
#include"stdlib.h"

void insertionsort (int* b,int n){
int j,key,i;
for(j=1;j <=n-1;j++)
{
key=b[j];
i=j-1;
while(b[i] > key && i >= 0)
{
b[i+1]=b[i];
i--;
}
b[i+1]=key;
}
for(i = 0;i <=n-1;i++)
printf("%d",b[i]);
printf("\n");
}

void main (){
int n = getchar()-'0';/*先输入数组大小,实验算法所以就不用动态了*/
int i;
int *a = malloc(sizeof(int)*n);
char c;
for(i=0;i <=n-1&&(c=getchar())!=EOF;i++)/*数组初始化*/
a[i]=c-'0';
insertionsort(a, n);
system("pause");
}
kkh30 2009-09-27
  • 打赏
  • 举报
回复
#include <stdio.h>
void main (){
int n = getchar()-'0';/*\u5148\u8f93\u5165\u6570\u7ec4\u5927\u5c0f\uff0c\u5b9e\u9a8c\u7b97\u6cd5\u6240\u4ee5\u5c31\u4e0d\u7528\u52a8\u6001\u4e86*/
int a[n],i;
char c;
for(i=0;i<=n-1&&(c=getchar())!=EOF;i++)/*\u6570\u7ec4\u521d\u59cb\u5316*/
a[i]=c-'0';
void insertionsort (int* b){
int j,key,i;
for(j=1;j<=n-1;j++)
key=b[j];
i=j-1;
while(b[i] > key && i > 0)
b[i+1]=b[i];
i--;
b[i+1]=key;
for(i = 0;i<=n-1;i++)
printf("%d",b[i]);
printf("\n");
}
insertionsort(a);
}
kkh30 2009-09-27
  • 打赏
  • 举报
回复
是改过的呀
whg01 2009-09-27
  • 打赏
  • 举报
回复
改成正式代码运行看看吧。
oyster2008 2009-09-27
  • 打赏
  • 举报
回复
你这个代码能通过编译?
hrlhrl0 2009-09-27
  • 打赏
  • 举报
回复
伪代码。不敢看你的了

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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