c语言之选择法排序
2014-05-09 16:48
633 查看
#include<stdio.h>
void select_score(int a[],int n)//排序函数
{
int i,j,k,temp;
for(i=0;i<n-1;++i)
{
k=i;
for(j=i+1;j<n;++j)
{
if(a[k]>a[j])
k=j;
if(k!=i)//为什么把这个if语句放在内循环里面就不对了呢?由于即使下一次比较大小的时候不需要呼唤的时候,由于k!=i了,所以仍然进行比较。
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
}
int main()
{
int a[10],i;
printf("please enter ten numbers for the array a:\n");
for(i=0;i<10;++i)//逐个为数组元素赋值
{
scanf("%d",&a[i]);
}
printf("The array before score is:\n");
for(i=0;i<10;++i)//输出还没排序的数组序列
{
printf("%d\t",a[i]);
}
printf("\n");
select_score(a,10);//排序函数,把该数组进行从小到大的排序
printf("The array after score is:\n");
for(i=0;i<10;++i)//输出排序后的数组
{
printf("%d\t",a[i]);
}
return 0;
}
void select_score(int a[],int n)//排序函数
{
int i,j,k,temp;
for(i=0;i<n-1;++i)
{
k=i;
for(j=i+1;j<n;++j)
{
if(a[k]>a[j])
k=j;
if(k!=i)//为什么把这个if语句放在内循环里面就不对了呢?由于即使下一次比较大小的时候不需要呼唤的时候,由于k!=i了,所以仍然进行比较。
{
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
}
}
int main()
{
int a[10],i;
printf("please enter ten numbers for the array a:\n");
for(i=0;i<10;++i)//逐个为数组元素赋值
{
scanf("%d",&a[i]);
}
printf("The array before score is:\n");
for(i=0;i<10;++i)//输出还没排序的数组序列
{
printf("%d\t",a[i]);
}
printf("\n");
select_score(a,10);//排序函数,把该数组进行从小到大的排序
printf("The array after score is:\n");
for(i=0;i<10;++i)//输出排序后的数组
{
printf("%d\t",a[i]);
}
return 0;
}
相关文章推荐
- GBK与UTF8编码互转的C++版
- C++的那些事:流与IO类
- 【转】VC++消息钩子编程
- C语言之countof与sizeof
- 《Effective C++》内存管理
- Vc++(MFC)中使用ADO 连接SQL Server的(远程)
- C语言简单文件操作
- 【算法】最短路径之A*搜索
- JNI 之二 :java & c/c++ 相互通信及调用
- C++11系列-常量表达式
- c语言下的通用数据库接口(之sqlite消化,模拟c#,java的反射)
- C++之练习题8
- C/C++的转义字符说明
- 黑马程序员-C语言之求三个数中的最大值的几种C语言写法
- KMP字符串模式匹配详解
- C++Vector用法
- C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- 算法 - 求n个数的中位数(C++)
- 算法 - 求两个自然数的最小公倍数(C++)
- 关于opencv video_reader.cpp的使用说明