C语言 冒泡排序,选择排序例题

C语言 冒泡排序,选择排序例题解析

1. 使用冒泡排序将以下数列按照从小到大的顺序输出:123,45,6,22,99,1,38,41,-6,0

冒泡排序排序过程容易理解,每个数如同水中的气泡一样,小的上升的速度快,被排到最上面,而大的被依次排在最下面,这样的过程我们比喻成"冒泡": 首先,需要比较相邻的元素,如果第一个比第二个大,就交换他们两个,重复这个过程,图片示例很直观

在这里插入图片描述

#include<stdio.h>
main()
{
	int j,i,t;
	int a[10]={123,45,6,22,99,1,38,41,-6,0};
	for(i=0;i<9;i++)
	{
		for(j=0;j<9-i;j++)
		{
			if(a[j]>a[j+1])
			{
				t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;
			}
		}
	}
	for(i=0;i<10;i++)
	{
	  	printf("%d ",a[i]);
	}
}

2.使用选择排序将以下数列按照从小到大的顺序输出:123,45,6,22,99,1,38,41,-6,0

在这里插入图片描述

选择排序的基本思想是选择待排序数列中最小的,放入序列中的第一个位置; 然后再在其余的数据中选择最小的,放入第二个位置;以此类推,数据就有序了. 这种排序方法符合人们日常的排序习惯

#include<stdio.h>
main()
{
	int i,j,k,t;
	int a[10]={123,45,6,22,99,1,38,41,-6,0};
	for(i=0;i<9;i++)
	{
        //描述第i趟的排序过程
        //1.在a[i]--a[9]中找最小元素的下标
		k=i;//假设第一个数最小
		for(j=i+1;j<10;j++)
		{	if(a[k]>a[j])
			k=j;
        }
        //2.a[k]与a[i]交换
		if(k!=i)//假设不成立
		{
			t=a[i];
			a[i]=a[k];
			a[k]=t;
		}
	}
	for(i=0;i<10;i++)
	{
	  	printf("%d ",a[i]);
	}
}


版权声明:本文为m0_46653702原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。