Java实现冒泡排序算法
2016-06-01 14:48
477 查看
冒泡排序是最简单的排序之一了,其答题思想是通过与相邻元素比较,把较小数往上"浮",较大数往下"沉"的过程,类似于水泡往上升一样,因此得名;冒泡排序几乎是个程序员都写得出来,但是面试的时候如何写一个逼格高的冒泡排序却不是每个人都能做到,下面提供一个参考代码:
此处swapped的作用是减少比较交换次数, 如2 3 4 5 1这个数组,如果加上swapped,则外层循环只要循环两次就可以了,但不加的话,则要排序N - 1次
import java.util.Comparator; /** * 排序器接口 * */ public interface Sorter { /** * 排序 * @param list 待排序的数组 */ public <T extends Comparable<T>> void sort(T[] list); /** * 排序 * @param list 待排序的数组 * @param comp 比较两个对象的比较器 */ public <T> void sort(T[] list, Comparator<T> comp); }
import java.util.Comparator; public class BubbleSorter implements Sorter { @Override public <T extends Comparable<T>> void sort(T[] list) { boolean swapped = true; for(int i = 0; i < list.length - 1 && swapped; i++) { swapped = false; for(int j = list.length - 1; j > 0; j--) { if(list[j].compareTo(list[j - 1]) < 0) { T temp = list[j]; list[j] = list[j - 1]; list[j - 1] = temp; swapped = true; } } } } @Override public <T> void sort(T[] list, Comparator<T> cmpt) { boolean swapped = true; for(int i = 0; i < list.length - 1 && swapped; i++) { swapped = false; for(int j = list.length - 1; j > 0; j--) { if(cmpt.compare(list[j], list[j - 1]) < 0) { T temp = list[j]; list[j] = list[j - 1]; list[j - 1] = temp; swapped = true; } } } } }
此处swapped的作用是减少比较交换次数, 如2 3 4 5 1这个数组,如果加上swapped,则外层循环只要循环两次就可以了,但不加的话,则要排序N - 1次
相关文章推荐
- Myeclipse中project facet问题
- 关于java.lang.IllegalArgumentException: View not attached to window manager 错误的分析
- 仿百度外卖3_7_1百度地图拖动定位,显示附近地址poi提示搜索
- JAVA运算符 instanceof
- 常用Eclipse快捷方式(推荐)
- 简单的swing对话框
- 读取任意行数据
- java的征途
- Java 遍历Map时 删除元素
- Java代理设计模式详解
- Java API
- Java foreach语法糖探秘
- synchronized 修饰在 static方法和 非static方法的区别
- 【JUC】JDK1.8源码分析之CopyOnWriteArraySet(七)
- java的继承关系中,构造方法调用问题
- Collection & Collections Part 1/2: Collection
- 杭电1113(Java实现)
- SpringMVC 获得应用的绝对路径
- java String 字符串只保留汉字
- java数组和集合复习