冒泡排序
2019-08-16 09:49:38来源:博客园 阅读 ()
冒泡排序
1、冒泡排序:
工作原理:依次相邻元素进行比较,将小数放在前面,大数放在后面,每一次扫描是将最大的数放在最右边,每次扫描完之后,下次扫描的个数减一,直到所有的数都放好位置。即第一次扫描:比较第一个数和第二个数,判断大小,小数在前,大数在后,
接着比较第二个数和第三个数,依次比较,直到最后一个数。此时最大的数在最后一个位置上了。第二次扫描:比较从第一个数和第二个数,判断大小,小数在前,大数在后,直到到倒数第二个数为止。同样的方法扫描n次。
本质是每扫描一次就拍好了一个最大值的位置,故叫做冒泡排序。
int [] a ={0,56,6,8,9,10};
int len = 6; //这里要明白 for(int i=0;i<len-1;i++) { //这层循环控制的是需要排序的数的个数,即控制扫面的轮数 Boolean IsChange=false;//这是冒泡改进的地方,增加一个标志来判断是否已经提前排好序了 //这里要注意由于比较的是在一个循环下前一个数跟后一个数比较 for(int j=0;j<len-i-1;j++) { //这层循环是控制每一轮扫描之后,将最大的数放在最右边 //这里的j<len-i-1要注意边界的原因,所以是j<len-i-1 if(a[j]>a[j+1]){ //相邻元素比较 ,交换 int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; IsChange=true;//如果一次扫描完之后都没发生任何的交换,则表明已经排好序了 } } if(!IsChange){ System.out.println("结束排序"+a); return; } }
2、插入排序:
工作原理:通过构建将整个待排序的序列分成有序序列和无序序列,从无序序列当中选择一个元素插入待有序序列中。这里需要注意的是,最初将整个序列的第一个数作为有序序列,后面n-1个数作为无序序列。从无序序列选择第一个数开始插入有序序列中,插入的方式是从右向左开始扫描有序序列,最右边的数是有序序列中最大的数,依次比较,待排序的数比已排好的数小,则将已排好的数往后移,最后找出待插入的数合适的位置插入。
原文链接:https://www.cnblogs.com/2019lgg/p/11138649.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 基础排序算法(附加java实现) 2020-06-02
- LeetCode 面试题53 - I. 在排序数组中查找数字 I 2020-05-22
- LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 2020-05-22
- Java 集合排序策略接口 Comparator 2020-05-20
- Oracle用decode函数或CASE-WHEN实现自定义排序 2020-05-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash