首页 > 代码库 > 冒泡排序高逼格
冒泡排序高逼格
import java.util.Comparator;/** * 排序器接口(策略模式: 将算法封装到具有共同接口的独立的类中使得它们可以相互替换) * * @author Chengpeng * */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);}/** * 冒泡排序 * * * */public class BubbleSorter implements Sorter { @Override public <T extends Comparable<T>> void sort(T[] list) { boolean swapped = true; for (int i = 1, len = list.length; i < len && swapped; ++i) { swapped = false; for (int j = 0; j < len - i; ++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> comp) { boolean swapped = true; for (int i = 1, len = list.length; i < len && swapped; ++i) { swapped = false; for (int j = 0; j < len - i; ++j) { if (comp.compare(list[j], list[j + 1]) > 0) { T temp = list[j]; list[j] = list[j + 1]; list[j + 1] = temp; swapped = true; } } } } public static void main(String[] args) { Person p1 = new Person(10); Person p2 = new Person(20); Person p3 = new Person(80); Person p4 = new Person(40); Person[] list = { p1, p2, p3, p4 };// new BubbleSorter().sort(list, new PersonComparator()); //or new BubbleSorter().sort(list, new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { return o1.score - o2.score; } }); for (int i = 0; i < list.length; i++) { System.out.println(list[i]); } }}class Person { int score; public Person(int score) { this.score = score; } public String toString() { return String.valueOf(this.score); }}class PersonComparator implements Comparator<Person> { @Override public int compare(Person o1, Person o2) { return o2.score - o1.score; }}
冒泡排序高逼格
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。