冒泡排序
来源:互联网 发布:淘宝助手打印快递单 编辑:程序博客网 时间:2024/05/29 10:16
先来整理一下冒泡排序的思路:
假设对一个长度为10 的无序数组进行冒泡排序,那么要跑9(length-1)趟,每一趟产生一个最大数。
第1趟,比较9次,得到一个最大数,最大数在数组末尾
第2趟,比较8次,得到一个次大数
第3趟,比较7次
…
第9趟,比较1次
一般的冒泡排序算法:
public static void bubbleSort1(int[] arr){ int length=arr.length; int temp; for(int i=length-1;i>=1;i--){ for(int j=0;j<i;j++){ if(arr[j]>arr[j+1]){//交换顺序 temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } }
问题:如果原始的数组已经排好序了,按照上面的算法,还是会进行(length-1)次外循环,下面对算法进行改进。如果本趟循环没有发生交换,证明已经排好序了,那么将不会进行下一趟。
public static void bubbleSort(int[] arr){ int length=arr.length; int temp; boolean flag;//标记 for(int i=length-1;i>=1;i--){ System.out.println("第"+(length-i)+"趟:"); flag=true;//在交换之前,令flag=true. for(int j=0;j<i;j++){ if(arr[j]>arr[j+1]){ flag=false;//一旦发生了交换,就把flag设为false temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } if(flag){//如果flag的值还没有发生改变,说明这一趟没有交换,说明已经排好序了 return; } } }
阅读全文
0 0
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 冒泡排序
- 基于情感分析的mapreduce
- node.js回调
- 3DText/TextMesh文字模糊解决方法
- 判断两条直线是否相交
- Code force 195A—Let's Watch Football
- 冒泡排序
- [LeetCode]476. Number Complement
- Entity Framework无法将更改同步到数据库的问题
- python爬虫一:必应图片(从网页源代码中找出图片链接然后下载)
- Python入门
- 一个简化版的SSH后端框架demo,支持接口、页面开发
- 【Away3D代码解读】(一):主要类及说明
- 人工智能要闻: 沃尔玛用机器人取代数千岗位, 腾讯开AI加速器, 猎户星空获微软人脸识别有限制类第一名
- tcp协议_mss