这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 坤创E-Geek/天科大新电社 » 排序算法——冒泡与选择

共13条 1/2 1 2 跳转至

排序算法——冒泡与选择

助工
2018-09-02 22:40:49     打赏

通常,在程序中的数据处理时,会用到各种算法来进行处理,以达到提高抗干扰、过滤等作用。本文主要介绍在排序算法中的最经典、最常用的冒泡和选择排序算法。

(一)   冒泡排序

这个名词的由来很好理解,一般在河水、水杯里的气泡往上冒,就叫做冒泡,气泡刚冒

出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,大家只需要了解即可。

 

冒泡排序的原理:

冒泡排序对相邻元素进行两两比较,如果顺序不对,就要对其位置进行调换,一直到排序完成。比如第一趟比较:首先比较第一个和第二个数的大小,将小数放前,大数放后。然后比较第二个数和第三个数的大小,再将小数放前,大数放后。以此类推,直到比较完最后两个数,第一趟就比较完了。重复第一趟过程,若有n个数,就要比较n-1趟。

c语言中可以使用双重循环,外层循环控制比较多少趟,内层循环每一趟比较的次数。

599210-20170619085503132-2067568088.gif                    (图片来自网上

算法代码:

#include<stdio.h>
#define N    6
int main()
{
        int a[N],i,j,t;
	for(i=0;i<N;i++)
		scanf("%d",&a[i]);
	 for(i=0;i<N-1;i++)
	 { 
	   for(j=1;j<N-i;j++)
	   { 
	      if(a[j-1]>a[j])
	      {
	      	t=a[j-1];a[j-1]=a[j];a[j]=t;
		  }
		} 
	} 
	printf("The sorted numbers: \n");
	for(i=0;i<N;i++)
		printf("%d  ",a[i]);
	return 0;
}

冒泡排序缺点:

但是冒泡排序也有一定的缺点,就是在比较过程中小的数不能一次到位,会导致效率低。所以一般不会选择冒泡排序,虽然冒泡排序书写是最简单的,但是平均性能是没有选择排序排序好的。



(二)   选择排序

选择排序是每一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

选择排序的原理:

若有n个数,第一轮排序从1~n个数中找到最小的数,与第一个数进行交换,第二轮排序从2~n个书中找到最小的数,与第二个数进行交换。以此类推,经过n-1轮的处理将会得到n个数的由小到大排序。

timg.gif                图片来自网上


算法代码:

#include<stdio.h>
#define N    5
int main()
{
         int a[N],i,j,k,t;
         printf("Input numbers:\n");
         for(i=0;i<N;i++)
                   scanf("%d",&a[i]);
         for(i=0;i<N-1;i++)
         {
                   k=i;
                   for(j=i+1;j<N;j++)
                            if(a[k]>a[j])k=j;
                   if(k!=i)
                   {
                            t=a[i];a[i]=a[k];a[k]=t;
                   }
         }
         printf("The sorted numbers: \n");
         for(i=0;i<N;i++)
                   printf("%d  ",a[i]);
         return 0;
}


选择排序同样有着耗时长的问题,只是排序法就有一大堆(插入法排序、希尔法排序),更何况还有其它的,这是一条不归路啊。未完待续。。。。。。





管理员
2018-09-03 08:54:54     打赏
2楼

谢谢爱学习的楼主分享


院士
2018-09-07 18:02:41     打赏
3楼
谢谢分享。

高工
2018-09-17 11:53:34     打赏
4楼

加油~!


菜鸟
2018-10-11 17:08:35     打赏
5楼

,加油!


菜鸟
2018-10-13 17:44:31     打赏
6楼

棒鸭!


专家
2018-11-10 18:47:09     打赏
7楼

好文章,顶一下


菜鸟
2018-11-13 23:03:15     打赏
8楼

算法配上动态图,超容易理解,谢谢分享


菜鸟
2018-11-21 21:43:35     打赏
9楼



菜鸟
2018-11-28 20:38:07     打赏
10楼

可以


共13条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]