【LintCode-463】整数排序(Java实现-冒泡排序优化)
来源:互联网 发布:网络攻击 演示 编辑:程序博客网 时间:2024/05/16 08:23
冒泡排序优化方案1:
public void sortIntegers(int[] A) { for(int j=0;j<A.length-1;j++){ Boolean state=true; for(int i=0;i<A.length-1-j;i++){ if(A[i]>A[i+1]){ int temp=A[i]; A[i]=A[i+1]; A[i+1]=temp; state=false; } } if(state){ break; } } }
个人解题思路:
加入状态位state,当内部for循环里的 if(A[i]>A[i+1]) 一次也没有满足时,说明已经是有序的序列。
冒泡排序优化方案2:
public void sortIntegers(int[] A) { int size=A.length-1,k=0; for(int j=0;j<A.length-1;j++){ Boolean state=true; for(int i=0;i<size;i++){ if(A[i]>A[i+1]){ int temp=A[i]; A[i]=A[i+1]; A[i+1]=temp; k=i; state=false; } } size=k; if(state){ break; } } }
个人解题思路:
在优化方案1的基础上,对内部for循环继续优化,找出并记录 满足条件(if(A[i]>A[i+1]))最大值i,此处的“i”相当于一条分界线,序号在“i”之后的序列已经处于有序。
下一趟内部循环时的满足条件就为:i<上一步的最大值‘i’;为什么这里不需要用 <= 呢,也是因为if(A[i]>A[i+1])这个筛选条件的原因。
如果您有更好的解法,欢迎您在留言区补充,感谢!!
阅读全文
0 0
- 【LintCode-463】整数排序(Java实现-冒泡排序优化)
- 【LintCode-463】整数排序(Java实现-冒泡排序/选择排序/插入排序)
- lintcode整数排序|冒泡排序算法(Java)
- 冒泡排序实现及优化(Java)
- Lintcode 463 整数排序
- 【常用排序算法】冒泡排序与冒泡排序优化改进(Java实现)
- lintcode整数排序|选择排序算法(Java)
- lintcode整数排序|插入排序算法(Java)
- lintcode 整数排序 | 希尔排序算法(Java)
- lintcode 整数排序 II | 归并排序(Java)
- lintcode 整数排序 II | 快速排序(Java)
- lintcode 463整数排序 lintcode 464整数排序II
- Java优化冒泡排序
- 冒泡排序优化JAVA
- 冒泡排序优化JAVA
- 冒泡排序及其优化的 Java 实现
- 冒泡排序Java语言实现及其优化
- 冒泡排序java实现及优化
- ThinkPHP5.0---------URL和路由
- ImageView
- css中的选择器
- HTTP/HTTPS与流量劫持/DNS劫持
- Java学习——instanceof 运算符
- 【LintCode-463】整数排序(Java实现-冒泡排序优化)
- ARDrone2.0 C#控制代码
- HTML+jq动态添加节点
- 遗传算法解决TSP问题
- setTimeout:pop a window
- Jar编译出错
- 20.3 代理的重定向方法
- 网络安全简介(CA、SSL、TLS)
- Hbase单机安装配置