C语言 用数组实现从小到大排序(三种方法)

声明:本内容采用两种选择排序法和冒泡排序法实现数组中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]);
	}
}

 

猜你喜欢

转载自blog.csdn.net/2301_80383723/article/details/134721813