冒泡排序和选择排序的区别

**

冒泡排序和选择排序的区别

**

初学c语言不久,发现好多同学对选择排序和冒泡排序傻傻分不清楚,在这里斗胆对它们的区别作出解释,也是对自己的学习成果作出检验,欢迎个位作出批评指正。
冒泡排序用简单的话来讲就是,从左往右,两两相互比较大小,左边的大就交换位置,循环往复,把较大的放后面。
下面是冒泡排序图解
冒泡排序图解

下面是冒泡排序代码实现

//冒泡排序 
#include<stdio.h>
#define N 6
void main()
{
 int A[N] = {6,32,89,28,66,100},i,j,iTmp;//iTmp是指临时变量 
 for(i = 0;i < N - 1;i++)//这里控制比较的轮数,一共要比较 N - 1轮 
 {
  for(j = i+1;j < N;j++)//这里控制每轮比较的次数 ,每经历一轮,比较的个数少一个 
  {
   if(A[i] > A[j])//这里指左边比右边大的话就交换位置  
   {
    iTmp   = A[i];
    A[i]   = A[j];
    A[j] = iTmp;
   }
  }
 }
 for(i = 0;i < N;i++)
 {
  printf("%d ",A[i]);//最后输出这个排好序的数组 
 }
}

选择排序

也用简单的话来说,就是从第一个数开始,与后面所有的数相比较,找出最小的数,放在第一个位置,以此类推,每一轮确定一个相对于这一轮最小的数。

下面是选择排序图解
在这里插入图片描述
下面是选择排序的代码实现:

//选择排序 
#include<stdio.h>
#define N 6
void main()
{
 int A[N] = {6,32,89,28,66,100},i,j,iTmp;//iTmp是指临时变量 
 for(i = 0;i < N - 1;i++)//这里控制比较的轮数,一共要比较 N - 1轮 
 {
  for(j = i+1;j < N;j++)//这里控制每轮比较的次数  
  {
   if(A[i] < A[j])//这里指找出最小值之后,就交换 
   {
    iTmp   = A[i];
    A[i]   = A[j];
    A[j] = iTmp;
   }
  }
 }
 for(i = 0;i < N;i++)
 {
  printf("%d ",A[i]);//最后输出这个排好序的数组 
 }
}

最后,总结一下冒泡和选择的区别:
冒泡排序是左右两个数相比较,而选择排序是用后面的数和每一轮的第一个数相比较;
冒泡排序每轮交换的次数比较多,而选择排序每轮只交换一次;
冒泡排序是通过数去找位置,选择排序是给定位置去找数;
当一个数组遇到相同的数时,冒泡排序相对而言是稳定的,而选择排序便不稳定;
在时间效率上,选择排序优于冒泡排序。

以上就是我对冒泡排序和选择排序区别的理解,如果有错误,欢迎个位大佬指正。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值