问题描述: 用选择法对10个整数从小到大排序。
方法一:
冒泡排序法
思路:每次从第一个数开始,依次对相邻两个数进行比较,满足条件,则交换两数的位置,否则继续和下一个数比较
代码如下:
#include<stdio.h>
int main()
{
int a[10],i,j,temp;
for(i=0; i<10; i++){
scanf("%d",&a[i]);//为数组arr[10]依次输入值
}
for(i=0; i<9; i++)
for(j=0; j<10-i; j++)//嵌套循环进行排序
if(a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
for(i=0; i<10; i++)
printf("%d\n",a[i]);
return 0;
}
程序使用双重嵌套循环,外循环控制比较次数,内循环找出每次比较的最小数,并将其往后移。
方法二:
选择排序法
思路:先在数组中寻找最小的数,交换他们的数组下标,最后再交换两个数的值。
特点:每次值只进行一次对值的交换操作。
#include<stdio.h>
int main()
{
int arr[10],temp;
int i,j,t=0;
for(i=0;i<10;i++)
scanf("%d",&arr[i]);
for(i=0;i<9;i++)
{
t=i;
for(j=i+1;j<10;j++)
if(arr[t]>arr[j])
t=j;
if(t!=i)
{
temp=arr[i];
arr[i]=arr[t];
arr[t]=temp;
}
}
for(i=0;i<10;i++)
printf("%d\n",arr[i]);
return 0;
}