c语言,用选择法对10个整数进行升序排列,新手能看懂的

如题所述

第1个回答  推荐于2016-05-30
#include <stdio.h>
int main(void)
{
int i,j,max,Num;
int Nums[10];
printf("\nPlace input 10 numbers:");
for (i=0;i<=9;i++)
{
printf("\nInput number %d:",i+1);
scanf("%d",&Nums[i]);
}
for (i=0;i<=9;i++)
{
max=0;
for (j=0;j<=9-i;j++)
{
if (Nums[max]<Nums[j])
{
max=j;
}
}
if (Nums[max]!=Nums[9-i])
{
Num=Nums[max];
Nums[max]=Nums[9-i];
Nums[9-i]=Num;
}
}
for (i=0;i<=9;i++)
{
printf("%d ",Nums[i]);
}
return 0;
}追答

有疑问追问哦,望采纳

追问

太复杂了……

你能给我弄出中间算法的程序吗?

变量一个字母就行

追答

可以

稍等

追问

追答

int SelectSort(int * ListData,int ListLength)
{
int i , j ;
int length = ListLength;
for(i=0;iListData[j])
{
k=j;
}
}
if(k!=i)
{
int tmp = ListData[i];
ListData[i] = ListData[k];
ListData[k] = tmp;
}
}
return 0;
}

这是个选择排序的函数,以后你直接调用传参就可以了

这样你就不用纠结里面在干啥了

反正我要排序,直接把数组名和数组长度扔进去,这个函数就会帮你拍好续了

追问

……

追答

你要是研究思路的话

找个笔,把每次运行都买纸上写一遍,然后你就懂了

以后也就不用在管这个函数了

本回答被提问者采纳
第2个回答  2014-12-02
#include<stdio.h>
#define N 10
void main()
{ int a[N],i,j,k,m;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
for ( i=0;i<N-1;i++ )
{ k=i; m=a[i];
for ( j=i+1;j<N;j++ ) if ( m>a[j] ) { k=j; m=a[j]; }
a[k]=a[i]; a[i]=m;
}
for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n");
}追问

……

追答

看不懂吗?哪些不懂,还是所有的都不明白,尽管提出来

追问

变量k m j 之间的关系搞不懂

追答

排序循环思路:从数组头开始i=0,一直找到倒数第2个数ia[j]则记下它的下标k=j;并记下值m=a[j];这样比较完后m中存放的必然是a[0]~a[9]中最小的数,那么进行交换:a[0]的值与a[k]的值互换a[k]=a[i]; a[i]=m;
现在a[0]中存放数组中最小数了,接着重复上述比较,让a[1]中存放a[1]~a[9]中最小数,...,a[8]存放a[8]~a[9]中最小数,结束排序

追问

我仔细研究下

本回答被网友采纳
第3个回答  2014-12-02
不能追问

什么意思?