C语言编程——选择排序法,要求:由主函数调用排序子函数,对n个整数进行从小到大的排序,谢了

如题所述

#include <stdio.h>
#define SIZE_N 20 //SIZE_N is the size of the array

void sortFun(int a[], int n)
{
int temp;
for(int i=0;i<n;i++) //进行n个循环,每次选出剩下的最小的数,如第一次选出n个数中最
for(int j=i+1;j<n;j++)//小的那个,如a[8],放入a[0],而将a[0]原来的值放入a[8].第二次
if(a[j]<a[i]) //就从a[1]到a[n-1]中找出最小的数放入a[1],以此类推。
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}

void main()
{
int a[SIZE_N];
for(int i=0;i<SIZE_N;i++)
{
scanf("%d",&a[i]); //输入数据
}
sortFun(a,SIZE_N); //调用排序函数
for(int j=0;j<SIZE_N;j++)
{
printf("%d\n",a[j]); //输出数据
}
}

以上就是基本的程序,局部可以优化使其更人性化。读入数据和输出数据的方式可以考虑用文件的方式,但排序的函数才是关键。以上程序调试通过,希望可以帮到你。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
#include<stdio.h>
void sort(int a[],int n) //选择排序
{
int i;
int j;
for(i=0;i<n;i++) //n个程序 排n-1次
{
int c=i;
for(j=i+1;j<n;j++) //从剩余的元素中,查找最小值,记住其下标。
{
if(a[c]>a[j])
{
c=j; //记住最小值的下标。
}
}
if(c !=i) //进行交换。
{
int temp = a[i];
a[i] = a[c];
a[c] = temp;
}
}
}
int main()
{
int a[10]={1,3,5,7,9,2,4,6,8,10};
sort(a,10);
int i;
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
getchar();
return 0;
}本回答被提问者采纳
第2个回答  2011-12-08
附上的网址有具体的写法和分析。选择法啊,冒泡啊什么的都是最好写的了。
如果直接拿来抄,就失去学习的意义了。

参考资料:http://www.cprogramming.com/tutorial/computersciencetheory/sorting2.html