声明:本内容采用两种选择排序法和冒泡排序法实现数组中5个数的从小到大排序。
一.选择排序法
方法一.选择排序法1
1.方法介绍
原理:每一次在待排序数组中找到最小的数组元素,将这个元素与第一个的数组元素的值交换位置,使得最小值排到第一位。第二次排序找到第二小的数排在第二位,以此类推。
2.代码实现
#include<stdio.h>
#define N 5
void main()
{
int i,j;
int a[N],t;
for (i=0;i<N;i++)
{
scanf("%d ",&a[i]);
}
for (i=0;i<N-1;i++)
{
for (j=i+1;j<N;j++)
{
if (a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for (i=0;i<N;i++)
{
printf("%d\t",a[i]);
}
}
方法二.选择排序法2
1.方法介绍
原理:法2与法1相比多了一个判断,先把i的值赋给j,让j和k去进行大小比较,最后j对应的元素就是每一次排序的最小值。之后判断是否与i相等,把最小值放在i的位置。
2.代码实现
#include<stdio.h>
#define N 5
void main()
{
int i,j;
int a[N],t,k;
for(i=0;i<N;i++)
{
scanf("%d ",&a[i]);
}
for(i=0;i<N-1;i++)
{
j=i;
for(k=i+1;k<N;k++)
{
if(a[k]<a[j])
{j=k;
}
}
if(j!=i)
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
for(i=0;i<N;i++)
{
printf("%d\t",a[i]);
}
}
二.冒泡排序法
方法三.冒泡排序法
1.方法介绍
原理:每一次排序比较数组中相邻的两个数组元素的值,将较小的与较大的交换。第一次排序,最大值值排在最后面的位置,第二次排序不用管最后的值,把第二大的值排在倒数第二位,以此实现从小到大的排序。
2.代码实现
#include<stdio.h>
# define N 5
void main()
{
int i,j;
int a[N],t;
for (i=0;i<N;i++)
{
scanf("%d ",&a[i]);
}
for (i=0;i<N-1;i++)
{
for (j=0;j<N-1-i;j++)
{
if(a[j+1]<a[j])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
}
}
}
for (i=0;i<N;i++)
{
printf("%d\t",a[i]);
}
}