作者:绿皮长条瓜

目录

一、算法介绍

二、MATLAB实现

三、两个例子

一、算法介绍

冒泡排序(Bubble Sort)算法是一种计算科学领域的较简单的排序算法。它重复地走访过要排序的元素列,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。

算法步骤如下:

  • step1:比较相邻的元素,如果第一个比第二个大,就交换他们两个。
  • step2:对每一对相邻元素做步骤step1,从开始第一对到结尾的最后一对。这步之后,最后的元素应该会是最大的数。
  • step3:针对所有的元素重复以上的步骤,除了最后一个。
  • step4:持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

二、MATLAB实现

利用MATLAB编写bubble_sort()函数对数据进行排序,函数如下:

%Date:2019-4-15%Writer:绿皮长条瓜%%本程序的目的是利用冒泡排序算法对已知某组数字或字母(根据ACSII码)进行排序function y = bubble_sort(A)    %参数A为向量或矩阵n = numel(A); %n为A中数字或字母的个数E = A;A = reshape(A, n, 1); %令A重组为向量B = 1:n;if isletter(A) == zeros(size(A,1),size(A,2))    %待排序数据为数字    flag = 0;elseif isletter(A) == ones(size(A,1),size(A,2)) %待排序数字为字母,根据ASCII码从小到大排序情况    A = int2str(A);                             %计算字母对应的ASCII码    A = str2num(A);    flag = 1;else    errordlg('输入参数不符合要求!', 'Warning!')endA = [A,B'];for i = 1:n-1    for j = 1:n-i        if A(j) > A(j+1);            temp = A(j,:);                       %核心代码            A(j,:) = A(j+1,:);            A(j+1,:) = temp;        end    endendA = A(:,2);fprintf('经冒泡排序算法排序后的结果如下:')   %输出排序结果for i = 1:n    if flag == 0        fprintf('%f ', E(A(i)))    else        fprintf('%c ', E(A(i)))    end    if mod(i,8) == 0        fprintf('')    endendfprintf('')end

三、两个例子

例1:对矩阵A中各元素利用冒泡排序法从小到大进行排序。利用MATLAB调用上述函数排序结果如下:

>> A = [1 5 6 3;15 4 6 8;9 17 13 11];>> bubble_sort(A)经冒泡排序算法排序后的结果如下:1.000000 3.000000 4.000000 5.000000 6.000000 6.000000 8.000000 9.000000 11.000000 13.000000 15.000000 17.000000 

例2:对字符串向量B中各字母按照ASCII码利用冒泡排序法从小到大进行排序。利用MATLAB调用上述函数排序结果如下:

>> B = ['Yida', 'Chen'];>> bubble_sort(B)经冒泡排序算法排序后的结果如下:C Y a d e h i n 

欢迎关注本人公众号:Python无忧

抢红包算法 c++_十大排序算法(一):冒泡排序法相关推荐

  1. JAVA十大排序算法动画_十大排序算法(java实现)

    [前言]最近在重新研究算法,此篇博文供自己复习使用也为方便广大程序员同学!此文代码均为自己实现,通过对比经典解法校验,若有错请读者及时提出! - [对比分析图]首先,我们先来对比分析一下这十大排序算法 ...

  2. python排序算法实现_十大排序算法python实现

    进程和线程 进程和线程的主要差别在于它们是不同的操作系统资源管理方式.进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径.线程有自己的堆栈和局 ...

  3. 归并排序执行次数_十大排序算法,看这篇就够了

    排序算法分类[1][2] 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序,它可以 ...

  4. python实现排序算法_python实现·十大排序算法之插入排序(Insertion Sort)

    简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...

  5. 【十大排序算法系列】快速排序

    写在前面 上一篇更新了这个系列的排序算法([十大排序算法系列]冒泡排序).分析了冒泡的逻辑和优化点,下面来写下快速排序(为什么跳这么快?因为比较走心hhhh) 照例给出系列内所有算法的对比.. 常见的 ...

  6. 【十大排序算法】(一)冒泡排序算法(优化)

    一.优化第一版 优化第一版是针对类似 int[] arr = {3,2,1,4,5,6,7,8,9; 这样的有很多已经排好序的数组,为了不让它做无用的循环,对于此场景进行的优化,优化代码如下: // ...

  7. 中希尔排序例题代码_【数据结构与算法】这或许是东半球分析十大排序算法最好的一篇文章...

    码农有道 历史文章目录(请戳我) 关于码农有道(请戳我) 前言 本文全长 14237 字,配有 70 张图片和动画,和你一起一步步看懂排序算法的运行过程. 预计阅读时间 47 分钟,强烈建议先收藏然后 ...

  8. 实现时间排序_面试官:手撕十大排序算法,你会几种?

    推荐阅读: 去面试大厂被 Kafka 虐了,后悔没有早点看到这份Kafka手写笔记 面试阿里,京东,百度,快手归来,三年Java开发总结了这些经验 阿里,字节,腾讯,面试题都涵盖了,这一份Java面试 ...

  9. mysql外部排序算法_「干货总结」程序员必知必会的十大排序算法

    绪论 身为程序员,十大排序是是所有合格程序员所必备和掌握的,并且热门的算法比如快排.归并排序还可能问的比较细致,对算法性能和复杂度的掌握有要求.bigsai作为一个负责任的Java和数据结构与算法方向 ...

最新文章

  1. Travis CI : 最小的分布式系统(三)
  2. Java设计模式 -- 简单工厂模式(SimpleFactory)
  3. System.out.println与System.err.println的区别
  4. 用vmware-converter4把linux 迁移到ESX4.1中
  5. linux usb学习笔记
  6. python开启多个端口服务_python bottle使用多个端口(多个进程)提高并发
  7. 小米平板5有望8月发布:骁龙870+120Hz刷新率屏
  8. C语言oo1cpp怎么进,cpp 第八章第7题解决办法
  9. 在线教学战“疫”打响,VIPKID背后是阿里云
  10. android管理交换机,用手机android超级终端 如何开启交换机端口
  11. 通过玩游戏从计算机小白到黑客的进阶之路!
  12. hexo+next 给博客添加网易云音乐外链接
  13. [译] 利用 Immutability(不可变性)编写更为简洁高效的代码
  14. 给0~1岁的新媒体人:公众号怎么配图?免费图片哪里找?
  15. han_attention(双向GRU+attention)(imdb数据集---文档分类)
  16. baiduRanking多站点批量百度排名查询
  17. 将图片转换为icon字体图表
  18. 我的linux学习笔记
  19. 5.字符串:aa:zhangsan@163.com!bb:lisi@sina.com!cc:wangwu@126.com 将存入hashMap中 key:aa,bb,cc value:zhang
  20. PostGIS 笔记

热门文章

  1. poj 1015 Jury Compromise_dp
  2. Google 菜市场(Android Market)上不去的解决方法
  3. linux线程同步之互斥锁——linux的关键区域
  4. 智能算法把奥巴马识别成白人,AI也学会歧视了?
  5. Text模式和PDU模式短信的区别
  6. 使用Elasticsearch+filebeat+logstach+kibana构建日志服务平台
  7. 计算机辅助药物合成投什么期刊,中国药物化学杂志审稿快吗
  8. c 语言与试验系统,C/C++程序设计学习与实验系统
  9. 服务器如何运行java文件_在linux服务器上运行java文件
  10. python什么时候诞生的_关于RFC 3339日期时间:在Python中产生timestamp