关于C语言用选择法对数组中10个整数按由小到大排序

2024-11-02 09:21:57
推荐回答(5个)
回答1:

程序是好的。正常运行:

#include

int main()

{

void sort(int arry[],int n);

int a[10],i;

printf("enter array:\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

sort(a,10);

printf("the sorted array:\n");

for(i=0;i<10;i++)

printf("%d ",a[i]);

printf("\n");

return 0;

}


void sort (int array[],int n)

{

int i,j,k,t;

for(i=0;i

{

k=i;

for(j=i+1;j

if(array[j]

k=j;

t=array[k];array[k]=array[i];array[i]=t;

}

}

回答2:

#include
int main()
{
void sort(int arry[],int n);
int a[10],i;
printf("enter array:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("the sorted array:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}


void sort (int array[],int n)
{
int i,j,k,t,d;
for(i=0;i{
d=k=i;


for(j=i+1;j
if(array[j]
d=j;


t=array[k];array[k]=array[i];array[i]=t;
}
}

程序23和30你这样子写是不对的你想想程序第28行if(array[j]

这个很重要相信我  因为人思考问题有时候一下想好几步  多数都是在这好几步中出错了。(你要做到于程序同步啊)哈哈

回答3:

如程序所给出的sort函数,k=i是为了设置每次排序的开始,是参照点;j=k呢,就是将此轮比较中最小的个数赋值给数组中的第i个,完成此次选择中最小数的选择。第一次排序从数组中第一个数开始,通过比较,确定最小的数,并通过t=array[k];array[k]=array[i];array[i]=t;
,完成赋值给a[o].以此类推,第二次由数组中第二个数组元素开始,也就是a[1]开始,比较数组中以下元素的大小,选择出余下元素中最小的,赋值给a[1],完成此次选择。以此类推,得到一个完整有序的数组。其中,比较次数分别为n-1,n-2,n-3、、、总次数为(n-1)n/2。你仔细想一下就会出来的。。。:-D

回答4:

从第i个数开始,比较后面的数,把最小的和第i个交换
当i=0时,交换完成,a[i]就是从第0个开始到最后一个中最小的那个
当i=1时,交换完成,a[i]就是从第1个开始到最后一个中最小的那个
.......
k是最小数的下标,然后a[k]和a[i]的数字交换,a[i]就是最小的了

回答5:

快排、二叉树 这两个比较难,还可以使用指针定位。

-itjob