
#include <stdio.h>
#include<conio.h>
/*----------
*INSERT_SORT
*
* args
* A[] int[],the number of A arrary
* len int ,A length
*
------------*/
void insert_sort(int A[],int len){
int i,j,key
//printf("A length %d\n",len) //output arrary length
for(j=1j<lenj++){
key=A[j]
i=j-1
while (i>-1&&A[i]>key) { //i from 0 to 5,so i>-1
A[i+1]=A[i]
i=i-1
A[i+1]=key
}
}
//output A arrary
for(i=0i<leni++)
printf("%d ",A[i])
}
int main()
{
int A[10]
int i=0
char c
while(1){
scanf("%d",&A[i])//input unmbers
c=getchar()
if(c=='\n')
break
i++
}
//printf("%d %d %d %d %d %d %d %d\n",A[0],A[1],A[2],A[3],A[4],A[5],A[6],A[7])
//use insert_sort
insert_sort(A,i+1)//A length is i+1
return 0
}
/*---test------------
* input 5 2 4 6 1 3
*
* output 1 2 3 4 5 6
* ------------------*/
以上程序使用的是Qt Creator 工具,用C语言实现,经调试已经通过。
但依然有个问题:在main()函数中调用insert_sort(int A[])时,若单传数组参数A[],再在insert_sort(int A[])函数里面调用len=sizeof(A)/sizeof(int)计算数组实际输入长度,但是得不到实际输入的数组长度,所以只能采用实参的方式将具体数字通过len传到insert_sort(int A[],int len );在insert_sort(int A[])接收到A数组后直接计算A[]实际输入长度,有什么办法可以实现?
#include<stdio.h>int main()
{int t,n,i,j,x,a[200]
scanf("%d",&t)
for(i=0i<ti++)
{scanf("%d%d",&n,&x)
for(j=1j<=nj++)
scanf("%d",&a[j])
a[0]=x
j=n
while(a[j]>x)
{a[j+1]=a[j]
j--
}
a[j+1]=x
for(i=1i<=ni++)
printf("%d ",a[i])
printf("%d\n",a[i])
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)