1、定义
选择法是指将每个数都与数组中的数比较,然后和最小的数交换位置,共进行n-1轮比较。
2、步骤
3、编写程序
int main()
{
void sort(int array[],int n);//声明函数
int a[5],i; //定义一个数组和变量
printf("请输入5个数:\n");
for(i=0;i<5;i++) //循环输入数组的值
{
scanf("%d",&a[i]);
}
sort(a,5); //调用sort函数
printf("排完序的结果为:\n");
for(i=0;i<5;i++) //循环输出数组的值
{
printf("%d",a[i]);
}
printf("\n");
system("pause");
return 0;
}
void sort(int array[],int n) //函数定义 array[] int n都为形参
{
int i,j,k,t; //定义几个变量
for(i=0;i<n-1;i++) //定义一共循环几趟
{
k=i;
for(j=i+1;j<n;j++) //定义一个数组中的数循环
{
if(array[j]<array[k]) //假设当i=0时k=0代表数组第一个元素,j=1代表数组第二个元素,让array[1]和array[0]比较
{ //如果array[1]小于array[0] 就让k=array[j]的下标,表示将这两个下标互换
k=j; //如果array[1]<array[0],那么k=1,接着让array[1]和array[j+1]比较
}
}
t=array[k];array[k]=array[i];array[i]=t; //比较下来,array[k]成了最小的值了,后把它和array[i]交换
}
}
4、结果
后续延申
选择法对数组从大到小排序
//选择法对数组元素排序
int main(){
void sort(int x[],int n);
int i,*p,a[10];
p=a;
printf("输入数组元素:\n");
for(i=0;i<10;i++,p++){
scanf("%d",p);
}
p=a;//让p重新为a的首元素地址
printf("初始数组为:\n");
for(i=0;i<10;i++,p++){
printf("%d",*p);
}
p=a;
printf("\n");
sort(p,10);
printf("排序后的元素为:\n");
p=a;
for(i=0;i<10;i++,p++){
printf("%d",p++);
}
printf("\n");
system("pause");
return 0;
}
void sort(int x[],int n){
int i,h,t,j;
for(i=0;i<n-1;i++){
h=i;
for(j=i+1;j<n;j++){
if(x[j]>x[h]){
h=j;
}
if(h!=i){
t=x[i];x[i]=x[h];x[h]=t;
}
}
}
return;
}