数组排序之冒泡法和选择法

排序是一维数组中最经典的常见操作。这一次,我们来聊聊冒泡排序法和简单选择排序法。

一.冒泡排序:
1.算法:
1>.基本思想:在排序过程中对元素进行两两比较,越小的元素会经由交换慢慢‘’浮‘’到数组的最前面(低下标处),像气泡一样慢慢浮起。
2>.本质:
第1趟冒泡:从数组n-1下标的元素到0下标元素遍历,比较相邻元素对,如果后一个元素小于前一个元素,则交换。第一趟结束时,最小元素‘’浮起‘’到达0下标位置。第二趟冒泡:从数组n-1下标的元素到1下标元素遍历(因为0下标的已经是最小元素,已经到位,无需再参加比较),比较相邻元素对,如果后一个元素小于前一个元素,则交换。第二趟结束时,本趟最小元素到达1下标位置。以此类推,最多n-1趟冒泡,便可完成排序。
3>.代码实现如下:

#include
#define SIZE 10
void print(int a[],int n)
{
	int i;
	printf("The array is:\n");
	for(i=0;ii;j--)			//递减循环,从后往前比较
			if(a[j]SIZE);
	printf("Please input %d elements:\n",n);
	for(i=0;i

二.选择法排序:
1.算法:
1>.本质:不断查找最大(小)元素的过程。
第一次:n个元素中最小的和第一个元素对换。第二次:n-1个元素中最小的和第二个元素对换。······.第n-1次:最后两个元素比较,小的放到第n-1个元素的位置上
2>.基本思想:把数组分为左右两个半区,左半区为有序子集,右半区为n-1趟选择。每一趟选择都在无序子集(右半区)中选择出最小元素,并与无序子集首元素交换,然后将该元素并入有序子集。共进行n-1趟排序,每趟最多交换一次。
3>.数据结构:数组,嵌套循环,记录本次查找最小值下标的变量,交换的中间变量
4>.代码实现如下:

#include
void Input(int *pa,int n)
{
	int i;
	printf("Plaese input %d elements:\n",n);
	for(i=0;i10);
	Input(a,n);							//调用函数,完成输入
	printf("The original array is:\n");
	Output(a,n);						//调用函数,输出原始数组
	sort(a,n);							//调用函数,完成排序
	printf("The sorted array is:\n");
	Output(a,n);						//调用函数,输出排序后的数组
	return 0;
}
后续还有更多本人学习心得,欢迎关注。           

你可能感兴趣的:(C,notes)