插入排序
把一个整数按大小顺序插入已排好序的数组中。
- C/C++ code
void main(){ int i,j,arr[6],temp,input,p,q,s,k; for (i=0;i<5;i++) { scanf("%d",&arr[i]); } for (i=0;i<5;i++) { for (j=i;j<5;j++) { if (arr[i]>arr[j]) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } for (i=0;i<5;i++) { printf("%d ",arr[i]); } printf("请输入要插入的数:\n"); scanf("%d",&input); for (i=0;i<5;i++) { if (input>arr[i]) { for (s=4;s>=i;s--) { arr[s+1]=arr[s]; } } } arr[i]=input; //这里好像出问题了,不知为什么,怎么排都无法得到想要的结果??? for(k=0;k<=5;k++) printf("%d ",arr[k]); }
[解决办法]
你这个程序只能插入一个数字,最好改成能动态增长的,我就不改了
- C/C++ code
#include<stdio.h>#define N 10int main(){ int i,j,arr[6],temp,input,p,q,s,k;//here for (i=0;i<5;i++) { scanf("%d",&arr[i]); } for (i=0;i<5;i++) { for (j=i;j<5;j++) { if (arr[i]>arr[j]) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } for (i=0;i<5;i++) { printf("%d ",arr[i]); } printf("请输入要插入的数:\n"); scanf("%d",&input); for (i=0;i<5;i++) { if (input<arr[i])//here { for (s=4;s>=i;s--) { arr[s+1]=arr[s]; } break;//here } } arr[i]=input; //这里好像出问题了,不知为什么,怎么排都无法得到想要的结果??? for(k=0;k<=5;k++) printf("%d ",arr[k]); }
[解决办法]
- C/C++ code
for (i=0;i <5;i++)
{
if (input>arr[i])
{
for (s=4;s>=i;s--)
{
arr[s+1]=arr[s];
}
}
}
这一段的内循环应该提到外面吧
[解决办法]
for (i=0;i<5;i++)
{
if (input<arr[i])
{
for (s=4;s>=i;s--)
{
arr[s+1]=arr[s];
}
break;
}
}
------这样就可以了。
[解决办法]
- C/C++ code
void main(){ int i,j,arr[6],temp,input,p,q,s,k; for (i=0;i<5;i++) { scanf("%d",&arr[i]); } for (i=0;i<5;i++) { for (j=i;j<5;j++) { if (arr[i]>arr[j]) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } for (i=0;i<5;i++) { printf("%d ",arr[i]); } printf("请输入要插入的数:\n"); scanf("%d",&input); for (i=0;i<5;i++) { if (input < arr[i]) { for(j=5;j>i;j--) { arr[j] = arr[j-1]; } arr[i]=input; break; } } for(k=0;k<=5;k++) printf("%d ",arr[k]); }
[解决办法]
- C/C++ code
void main(){ int i,j,arr[6],temp,input,p,q,s,k; for (i=0;i<5;i++) { scanf("%d",&arr[i]); } for (i=0;i<5;i++) { for (j=([color=#FF0000]i+1)[/color] ;j<5;j++) { if (arr[i]>arr[j]) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } for (i=0;i<5;i++) { printf("%d ",arr[i]); } printf("请输入要插入的数:\n"); scanf("%d",&input); for (i=0;i<5;i++) { if (input < arr[i]) { for(j=5;j>i;j--) { arr[j] = arr[j-1]; } arr[i]=input; break; } } for(k=0;k<=5;k++) printf("%d ",arr[k]); }
[解决办法]
抱歉上一篇发错了!
- C/C++ code
void main(){ int i,j,arr[6],temp,input,p,q,s,k; for (i=0;i<5;i++) { scanf("%d",&arr[i]); } for (i=0;i<5;i++) { for (j=(i+1);j<5;j++) { if (arr[i]>arr[j]) { temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } } for (i=0;i<5;i++) { printf("%d ",arr[i]); } printf("请输入要插入的数:\n"); scanf("%d",&input); for (i=0;i<5;i++) { if (input < arr[i]) { for(j=5;j>i;j--) { arr[j] = arr[j-1]; } arr[i]=input; break; } } for(k=0;k<=5;k++) printf("%d ",arr[k]); }