c语言通过函数调用实现选择排序法:
1、写一个简单选择排序法的函数名,包含参数。int SelectSort(int * ListData,int ListLength)
2、写两个循环,在循环中应用简单选择插入排序:
int SelectSort(int * ListData,int ListLength)
{
int i , j
int length = ListLength
for(i=0i<=length-2i++)
{
int k = i
for(j=i+1j<=length-1j++)
{
if(ListData[k]>ListData[j])
{
k=j
}
}
if(k!=i)
{
int tmp = ListData[i]
ListData[i] = ListData[k]
ListData[k] = tmp
}
}
return 0
}
3、对编好的程序进行测试,得出测试结果:
int main()
{
int TestData[5] = {34,15,6,89,67}
int i = 0
printf("排序之前的结果\n")
for(i = 0i<5i++)
printf("|%d|",TestData[i])
int retData = SelectSort(TestData,5)
printf("排序之后的结果:\n")
for(i = 0i<5i++)
printf("|%d|",TestData[i])
return 0
}
4、简单选择排序中,需要移动的记录次数比较少,主要的时间消耗在对于数据的比较次数。基本上,在比较的时候,消耗的时间复杂度为:n*n。
用选择排序法编写c语言,实现从键盘上输入10个数,按从大到小的顺序排序输出。代码如下:
#include<stdio.h>
int main()
{
int i,j,a[10],t
printf("输入数")
for (i = 0i <10i++)
scanf("%d",&a[i])
for (i = 0i <10i++)
{
for (j = i + 1j <10j++)
if (a[i] <a[j]){
t = a[i]
a[i] = a[j]
a[j] = t
}
}
printf("从大到小")
for (i = 0i <10i++)
printf("%2d", a[i])
return 0
}
扩展资料:
代码还可以设计,如下:
#include<stdio.h>
int main()
{
int a[10],i,j,t//定义数组
for(i=0i<10i++){
scanf("%d",&a[i])//给数组赋值
}
for(i=0i<9i++)//10个数,进行9轮比较
for(j=0j<10-ij++){//第一个数比较9次,依次递减
if(a[j]>a[j+1]) {//交换值
t=a[j]
a[j]=a[j+1]
a[j+1]=t
}
}
for(i=0i<10i++){
printf("%d\n",a[i])//输出数组的值
}
return 0
}
}
printf("the sorted numbers:\n")
for(i=0i<10i++)
printf(" %d",a[i])
printf("\n")
}
参考资料:百度百科-printf
#include "stdio.h"
#define N 10
int main(int argc,char *argv[]){
int a[N],i,j,k
printf("Please enter %d integer(s)...\n",N)
for(i=0i<Nscanf("%d",a+i++))//输入
for(i=0i<Ni++){//选择法排序
for(k=i,j=k+1j<Nj++)
if(a[k]>a[j])
k=j
if(k!=i)
j=a[k],a[k]=a[i],a[i]=j
printf("%d ",a[i])
}
printf("\n")
return 0
}
代码图片和运行样例: