实验项目:排序 (写实验报告)
实验目的, 1.掌握排序的一般方法
2.正确使用数组来解决排序中
的数据类型描述问题。
实验内容,
程序 (一 ) 功能:编程实现用冒泡对输入的
10个数由小到大排序。
参考程序,
#include <stdio.h>
main()
{ int a[11],i,j,t;
printf("Input 10 numbers:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=9;j++)
for(i=1;i<=10-j;i++)
if(a[i]>a[i+1])
{t=a[i]; a[i]=a[i+1]; a[i+1]=t;}
printf("The sorted numbers:\n");
for(i=1;i<11;i++)
printf("%d ",a[i]);
}
程序 (二 ) 功能:编程实现用选择法对输入的 10个数由小到大排序。参考程序,
#include <stdio.h>
main()
{ int a[11],i,j,k,x;
printf("Input 10 numbers:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1;i<10;i++)
{ k=i ;
for(j=i+1;j<=10;j++)
if(a[j]<a[k]) k=j ;
if (k!=i)
{ x=a[i]; a[i]=a[k]; a[k]=x;}
}
printf("The sorted numbers:\n");
for(i=1;i<11;i++)
printf("%d ",a[i]);
}
程序 (三 ) 功能, 编程实现由键盘输入一个数插入到有序
数组中 。(参考黄皮 教材中实验十一 ) main()
{int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,numder,end,i,j;
scanf(“%d”,&number); end=a[9];
if(number>end) a[10]=number; else
{for(i=0;i<10;i++)
{if(a[i]>number) { temp1=a[i];
a[i]=number; for(j=i+1;j<11;j++)
{temp2=a[j];a[j]=temp1;temp1=temp2;}
break; }
} }
}
问题,
1、若使程序一输出的排序结果为,
a[1]=1 a[2]=2……a[10]=10 的形式,程序应
做何改动?
2、完成程序二的空白部分,把程序补充完
整。
3、分析选择法和冒泡法排序的异同。
编程实现程序三的功能,要求插入的是任意
数值。
实验目的, 1.掌握排序的一般方法
2.正确使用数组来解决排序中
的数据类型描述问题。
实验内容,
程序 (一 ) 功能:编程实现用冒泡对输入的
10个数由小到大排序。
参考程序,
#include <stdio.h>
main()
{ int a[11],i,j,t;
printf("Input 10 numbers:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=1;j<=9;j++)
for(i=1;i<=10-j;i++)
if(a[i]>a[i+1])
{t=a[i]; a[i]=a[i+1]; a[i+1]=t;}
printf("The sorted numbers:\n");
for(i=1;i<11;i++)
printf("%d ",a[i]);
}
程序 (二 ) 功能:编程实现用选择法对输入的 10个数由小到大排序。参考程序,
#include <stdio.h>
main()
{ int a[11],i,j,k,x;
printf("Input 10 numbers:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1;i<10;i++)
{ k=i ;
for(j=i+1;j<=10;j++)
if(a[j]<a[k]) k=j ;
if (k!=i)
{ x=a[i]; a[i]=a[k]; a[k]=x;}
}
printf("The sorted numbers:\n");
for(i=1;i<11;i++)
printf("%d ",a[i]);
}
程序 (三 ) 功能, 编程实现由键盘输入一个数插入到有序
数组中 。(参考黄皮 教材中实验十一 ) main()
{int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp1,temp2,numder,end,i,j;
scanf(“%d”,&number); end=a[9];
if(number>end) a[10]=number; else
{for(i=0;i<10;i++)
{if(a[i]>number) { temp1=a[i];
a[i]=number; for(j=i+1;j<11;j++)
{temp2=a[j];a[j]=temp1;temp1=temp2;}
break; }
} }
}
问题,
1、若使程序一输出的排序结果为,
a[1]=1 a[2]=2……a[10]=10 的形式,程序应
做何改动?
2、完成程序二的空白部分,把程序补充完
整。
3、分析选择法和冒泡法排序的异同。
编程实现程序三的功能,要求插入的是任意
数值。