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版权协议,转载请附上原文出处链接和本声明。