C语言选序法问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 03:29:46
有一题目要求输入10个数字用选序法将输入的数字由小到大排列,这是我写的程序~不知道是不是选序法,另外有点问题,请高手指点下.如果不是选序法请将源程序写出来下如果可以的话解说下什么是选序法更好,谢谢!
#include "stdio.h"
main()
{long double a[10];
int i,j,k,t;
printf("请输入任意10个数:");
for(i=0;i<=9;i++)
scanf("%lf",&a[i]);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
for(k=1;k<9-i;k++)
if(a[i]>a[i+k])
{t=a[i];
a[i]=a[i+k];
a[i+k]=t;}
for(i=0;i<=9;i++)
printf("%lf ",a[i]);}

什么是“选序法”??

你是要说“选择排序”吗?

你的程序用的是“冒泡法”,选择法如下:

for (i=0;i<9;i++)
{
k=i;
for (j=i+1;j<10;j++)
if (a[k]>a[j]) k=j;
if (k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}