排序:简单排序算法实现:冒泡,选择,插入
2014-12-30 17:07
706 查看
package com.zf.algorithm.sort; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public final class Sort { /** * 排序方向,升序或者降序 * * @author zf * */ public enum ORDER { ascend(1), descend(-1); private ORDER(int value) { this.order = value; } private int order; public int getOrder() { return order; } } /** * 简答的冒泡排序。 * * @param list * 需要排序的数组 * @param order * 顺序 */ @SuppressWarnings("unchecked") public static <T> void simpleBubbleSort(List<Comparable<T>> list, ORDER order) { // Check parameter if (list == null || list.size() == 0) return; for (int i = 0; i < list.size() - 1; i++) { for (int j = i + 1; j < list.size(); j++) { if (list.get(i).compareTo((T) list.get(j)) * order.getOrder() > 0) { Comparable<T> temp = list.get(i); list.set(i, list.get(j)); list.set(j, temp); } } } } /** * 改进的冒泡排序。 * * @param list * 需要排序的数组 * @param order * 顺序 */ @SuppressWarnings("unchecked") public static <T> void impovedBubbleSort(List<Comparable<T>> list, ORDER order) { // Check parameter if (list == null || list.size() == 0) return; for (int i = 0; i < list.size(); i++) { for (int j = list.size() - 1; j > i; j--) { if (list.get(j - 1).compareTo((T) list.get(j)) * order.getOrder() > 0) { Comparable<T> temp = list.get(j); list.set(j, list.get(j - 1)); list.set(j - 1, temp); } } } } /** * 简答的选择排序。 * * @param list * 需要排序的数组。 * @param order * 顺序。 */ @SuppressWarnings("unchecked") public static <T> void simpleSelectSort(List<Comparable<T>> list, ORDER order) { // Check parameter if (list == null || list.size() == 0) return; for (int i = 0; i < list.size() - 1; i++) { int loc = i; for (int j = i + 1; j < list.size(); j++) { if (list.get(loc).compareTo((T) list.get(j)) * order.getOrder() > 0) { loc = j; } } Comparable<T> temp = list.get(i); list.set(i, list.get(loc)); list.set(loc, temp); } } /** * 插入排序。 * * @param list * 需要排序的数组。 * @param order * 顺序。 */ @SuppressWarnings("unchecked") public static <T> void insertSort(List<Comparable<T>> list, ORDER order) { // Check parameter if (list == null || list.size() == 0) return; Object[] arrays = list.toArray(); for (int i = 1; i < arrays.length; i++) { Comparable<T> iEle = (Comparable<T>) arrays[i]; if (iEle.compareTo((T) arrays[i - 1]) * order.getOrder() < 0) { int j = i - 1; for (; j >= 0; j--) { if (iEle.compareTo((T) arrays[j]) * order.getOrder() < 0) { arrays[j + 1] = arrays[j]; } else { break; } } arrays[j + 1] = iEle; } } list.clear(); for (Object object : arrays) list.add((Comparable<T>) object); } public static void main(String[] args) { Integer[] integers = { 4, 3, 7, 1, 6, 2 }; List<Comparable<Integer>> list = new ArrayList<Comparable<Integer>>(); list.addAll(Arrays.asList(integers)); System.out.println("INPUT : " + list); // Sort.simpleBubbleSort(list, ORDER.descend); // Sort.impovedBubbleSort(list, ORDER.descend); // Sort.simpleSelectSort(list, ORDER.descend); Sort.insertSort(list, ORDER.ascend); System.out.println("OUTPUT : " + list); } }
相关文章推荐
- 史上最简单!冒泡、选择排序的Python实现及算法优化详解
- 《面试》 几种经典的简单的排序方法(冒泡,选择,插入)python实现
- 简单排序算法:冒泡、选择、插入
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- Python实现冒泡,插入,选择排序简单实例
- Python实现冒泡,插入,选择排序简单实例
- Java实现的排序算法及比较 [冒泡,选择,插入,归并,希尔,快排]
- Java实现简单排序——冒泡、选择、插入、奇偶排序
- Java中实现简单的三大排序——冒泡、选择、插入
- [Python-算法]python实现冒泡,插入,选择排序
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- 简单选择、冒泡、插入排序思想及Java实现代码
- (数据结构排序的实验四)快速,冒泡,简单选择,直接插入排序的c语言实现!!
- 数据结构与算法之--简单排序:冒泡、选择和插入
- 简单排序:冒泡、选择、插入
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- 算法--排序(冒泡,选择,插入,快速)
- 排序算法复习(Java实现): 插入,冒泡,选择,Shell,快速排序
- 四种简单的排序算法(插入、冒泡、选择排序、快速排序法)+汉诺塔算法
- 算法-基本排序:冒泡、选择、插入