排序:关于选择法和冒泡法的解析。
前言:主要解析一下冒泡法 选择法的思想和过程。及部分编码,
首先解释一下冒泡法:
所谓冒泡法类似枚举,简单点说就是一个一个作比较
例如对一列数字进行排序,用冒泡法的思想就是(这里说从小到大拍哈,如果是从大到小逆过来就好了):
1:先让第一个数和第二个数比较如果第一个比第二个大的话,二者换位,
然后是第一个和第三个比较·····
2:让第二个和第三个比较,和第四个比较
3:第三个和第四个·······知道倒数第二个和最后一个比较后。则排序完成。
然后呢我们来解释一下选择法:
1:先找到最小的数及对应下标(即对应的数组位置。)然后让最小的数和第一个数换位。
2:找到从第二个到最后一个最小的数及对应位置,然后和第二个数换位,······
如此循环往复当找到最后两个数中的最小数并和倒数第二个数换位之后则排序完成。
好了,讲到这相信已经基本理解两种方法的过程了。
不过编码也不是件容易的事。现在大家可以先去编一下。
下文我会把关键部分的编码给大家展示一下。当然,即使是同一种方法代码也会有出入。
只要过程没错就好。
下面是冒泡法的编码:
#include<stdio.h>
int main()
{
int qwe[5];
int a,s,d,f;
for(a=0;a<5;a++)
scanf("%d",&qwe[a]);
for(a=0;a<4;a++)
{
for(f=a;f<5;f++)
{
s=qwe[a];
d=qwe[f+1];
if(s>d)
{
qwe[a]=d;
qwe[s+1]=s;
}
}
}
for(a=0;a<5;a++)
printf("%d ",qwe[a]);
printf("\n");
}
以数组长度为6写的。
长度不同可自行改编。
而选择法就不变牌了,实在不懂评论区留言实时更新。
个人作品,
如有错误,请指出;
如要转载,请注明出处。
三克油。。