抢红包算法 c++_十大排序算法(一):冒泡排序法
作者:绿皮长条瓜
目录
一、算法介绍
二、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
![](/assets/blank.gif)
欢迎关注本人公众号:Python无忧
抢红包算法 c++_十大排序算法(一):冒泡排序法相关推荐
- JAVA十大排序算法动画_十大排序算法(java实现)
[前言]最近在重新研究算法,此篇博文供自己复习使用也为方便广大程序员同学!此文代码均为自己实现,通过对比经典解法校验,若有错请读者及时提出! - [对比分析图]首先,我们先来对比分析一下这十大排序算法 ...
- python排序算法实现_十大排序算法python实现
进程和线程 进程和线程的主要差别在于它们是不同的操作系统资源管理方式.进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径.线程有自己的堆栈和局 ...
- 归并排序执行次数_十大排序算法,看这篇就够了
排序算法分类[1][2] 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序,它可以 ...
- python实现排序算法_python实现·十大排序算法之插入排序(Insertion Sort)
简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...
- 【十大排序算法系列】快速排序
写在前面 上一篇更新了这个系列的排序算法([十大排序算法系列]冒泡排序).分析了冒泡的逻辑和优化点,下面来写下快速排序(为什么跳这么快?因为比较走心hhhh) 照例给出系列内所有算法的对比.. 常见的 ...
- 【十大排序算法】(一)冒泡排序算法(优化)
一.优化第一版 优化第一版是针对类似 int[] arr = {3,2,1,4,5,6,7,8,9; 这样的有很多已经排好序的数组,为了不让它做无用的循环,对于此场景进行的优化,优化代码如下: // ...
- 中希尔排序例题代码_【数据结构与算法】这或许是东半球分析十大排序算法最好的一篇文章...
码农有道 历史文章目录(请戳我) 关于码农有道(请戳我) 前言 本文全长 14237 字,配有 70 张图片和动画,和你一起一步步看懂排序算法的运行过程. 预计阅读时间 47 分钟,强烈建议先收藏然后 ...
- 实现时间排序_面试官:手撕十大排序算法,你会几种?
推荐阅读: 去面试大厂被 Kafka 虐了,后悔没有早点看到这份Kafka手写笔记 面试阿里,京东,百度,快手归来,三年Java开发总结了这些经验 阿里,字节,腾讯,面试题都涵盖了,这一份Java面试 ...
- mysql外部排序算法_「干货总结」程序员必知必会的十大排序算法
绪论 身为程序员,十大排序是是所有合格程序员所必备和掌握的,并且热门的算法比如快排.归并排序还可能问的比较细致,对算法性能和复杂度的掌握有要求.bigsai作为一个负责任的Java和数据结构与算法方向 ...
最新文章
- Travis CI : 最小的分布式系统(三)
- Java设计模式 -- 简单工厂模式(SimpleFactory)
- System.out.println与System.err.println的区别
- 用vmware-converter4把linux 迁移到ESX4.1中
- linux usb学习笔记
- python开启多个端口服务_python bottle使用多个端口(多个进程)提高并发
- 小米平板5有望8月发布:骁龙870+120Hz刷新率屏
- C语言oo1cpp怎么进,cpp 第八章第7题解决办法
- 在线教学战“疫”打响,VIPKID背后是阿里云
- android管理交换机,用手机android超级终端 如何开启交换机端口
- 通过玩游戏从计算机小白到黑客的进阶之路!
- hexo+next 给博客添加网易云音乐外链接
- [译] 利用 Immutability(不可变性)编写更为简洁高效的代码
- 给0~1岁的新媒体人:公众号怎么配图?免费图片哪里找?
- han_attention(双向GRU+attention)(imdb数据集---文档分类)
- baiduRanking多站点批量百度排名查询
- 将图片转换为icon字体图表
- 我的linux学习笔记
- 5.字符串:aa:zhangsan@163.com!bb:lisi@sina.com!cc:wangwu@126.com 将存入hashMap中 key:aa,bb,cc value:zhang
- PostGIS 笔记
热门文章
- poj 1015 Jury Compromise_dp
- Google 菜市场(Android Market)上不去的解决方法
- linux线程同步之互斥锁——linux的关键区域
- 智能算法把奥巴马识别成白人,AI也学会歧视了?
- Text模式和PDU模式短信的区别
- 使用Elasticsearch+filebeat+logstach+kibana构建日志服务平台
- 计算机辅助药物合成投什么期刊,中国药物化学杂志审稿快吗
- c 语言与试验系统,C/C++程序设计学习与实验系统
- 服务器如何运行java文件_在linux服务器上运行java文件
- python什么时候诞生的_关于RFC 3339日期时间:在Python中产生timestamp