从键盘输入10个整数,用插入法对输入的数据按照从小到大的顺序进行排序

供稿:hz-xin.com     日期:2025-01-14
从键盘输入十个整数,用选择法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出

#include
#include
using namespace std;
void collocate(int a[]);

int main()
{
int i,a[10];
cout<<"Please input 10 number: "<<endl;

for(i=0;i<10;i++)
cin>>a[i];

collocate(a);

for(i=0;i<10;i++)
cout<<setw(3)<<a[i];
cout<<endl;

return 0;
}

void collocate(int a[])
{
int i,j,temp;

for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(a[j]<a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
}

你这个中间的if选择语句有问题,是把a的值赋给t,即t=a;
其实你这样太麻烦了,给你一个简单的思路。这四个数可以看做是四个个头不同的人,你只要从左到右两两比较,个头小的人左移,个头高的人右移,最后从左到右输出就好。
四个整数在a[0]到a[3]中:
for(i=0;i<3;i++)
{
k=i;
for(j=i+1;j<4;j++)
if(a[j]>a[k])
k=j;
t=a[k];
a[k]=a[i];
a[i]=t;
}如此,a[0]到a[3]中就是从小到大排好序的了。

INSERTSORT(rectype R[])
{
int i,j;
for(i=2,i<n,i++)
{
R[0]=R[i];
j=i-1;
while(R[0].key<R[j].key)
{R[j+1]=R[j--];}
R[j+1]=R[0];
}
}

int main( )
{ int i,j,num,a[10];
for(i=0;i<10;i++)
{ printf("Enter No. %d:", i+1);
scanf("%d",&num);
for(j=i-1;j>=0&&a[j]>num;j--)
a[j+1]=a[j];
a[j+1]=num;
}
for(i=0;i<10;i++)
printf ("No.%d=%d\n", i+1, a[i]);
}

从键盘输入10个整数,用插入法对输入的数据按照从小到大的顺序进行排序...
INSERTSORT(rectype R[]){ int i,j;for(i=2,i<n,i++){ R[0]=R[i];j=i-1;while(R[0].key<R[j].key){R[j+1]=R[j--];} R[j+1]=R[0];} }

功能是从键盘输入 10 个整数,要求用插入排序方法将它们 按从小到大的...
int main(){ int a[11];\/\/数组长度为11 int n = 10, i, j, t;int x;printf("请输入10个整数:\\n");for (i = 0; i < 10; i++)scanf("%d", &a[i]);for (i = 0; i < 10; i++)\/\/用冒泡法将输入的十个数排列好 *\/ for (j = 0; j < 9 - i; j++)if (a...

从键盘任意输入10个整数,用插入法完成从小到大排序,,,插入法阿,求大神...
include <stdio.h>\/\/插入法:在前面的有序序列中寻找相应的位置插入void InsertSort(int *a,int n){ int i,j; for(i=1;i<n;i++) { \/\/从后面无序的往前面有序的插 for(j=i-1;j>=0;j--) { if(a[i]<a[j]) { a[j+1]=a[j]; } break; \/\/找到插...

插入法C语言
下面是一个用插入排序法对10个整数进行降序排序的示例源代码:c#include main() {int a[10], i, j, t;printf("Please input 10 numbers: ");for (i = 0; i < 10; i++) scanf("%d", &a[i]);for (i = 1; i < 10; i++) {t = a[i];for (j = i - 1; j >= 0 ...

c语言10个数小到大插入法排序
main(){ int a[10],r[11];int *p;int i,j;for(i=0;i<10;i++){ p=&a[i];printf("please scan the NO:d\\n",i);scanf("%d",p);r[i+1]=a[i];} r[0]=1;for(i=2;i<=10;i++){ r[0]=r[i];j=i-1;while(r[j]>r[0]){ r[j+1]=r[j];j--;} r[j+...

C语言编写程序,用插入法将10个数进行从大到小排序
printf("Please Input 10 Numbers:\\n"); for(i=1;i<=10;i++) scanf("%d",&a[i]); for(i=2;i<=10;i++) { a[0]=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<=10;i++) printf("%d ",a[i]); printf("\\n"); } 本回答...

c语言的两种排序?
1、选择排序法 要求输入10个整数,从大到小排序输出 输入:2 0 3 -4 8 9 5 1 7 6 输出:9 8 7 6 5 3 2 1 0 -4 代码:include<stdio.h> int main(int argc,const char*argv[]){ int num[10],i,j,k,l,temp;\/\/用一个数组保存输入的数据 for(i=0;i<=9;i++){ scanf(...

设计C语言程序,用一维数组输入N个整数,将这n个整数按从大到小排列_百度...
三、插入法 算法要求:用插入排序法对10个整数进行降序排序。算法分析:将序列分为有序序列和无序列,依次从无序序列中取出元素值插入到有序序列的合适位置。初始是有序序列中只有第一个数,其余n-1个数组成无序序列,则n个数需进n-1次插入。寻找在有序序列中插入位置可以从有序序列的最后一个数...

C语言:输入一个10个整数的数组,按从小到大排序输出,然后再输入一个整数...
实在觉得繁琐,你的程序有2个地方可以改进 1,排序的时候不用冒泡算法,取用其它的排序算法 2,插入的时候可以用二分插入法,比你上面的算法效率高多了

用C语言实现从键盘上输入不确定个数的数字,将数字从小到大排序后输出...
对于输入的数据的个数不确定的情况,一般会预设一个特殊的非法值(这个值是属于论域之外的一个值)作为终止值,例如如果论域是正整数,则通常会将0作为终止值,即当输入0时结束,且0不作为有效数据。 因此如果你要输入的都是正整数,则程序可如下(对于其它情况可采用类似方法) #include <stdi...