这几天看排序算法,网上大多数排序算法的解释都是“过于专业”,导致一时半会看不明白到底在说什么玩意。现在总结下几大排序算法(java实现)
1.直接插入排序
说的简单点,就是一组无序序列{A1,A2,........An} 先取出A1,然后从A2与A1比较,比较完之后序列状况是{A1,A2}{A3..........An}, 其中{A1,A2}有序, 然后取出A3 ,放到{A1,A2}有序序列合适位置,导致{A1,A2,A3}{A4........An}。重复这个过程,直到取出An放入{A1,A2........An-1}有序序列中。
java实现代码如下(利用LinkedList作为辅助序列)
/** * 直接插入排序 * @param arrays 需要排序的序列 */ public static void sort(int[] arrays){ if(arrays == null || arrays.length == 0){ return; } //辅助序列 LinkedList<Integer> list = new LinkedList<Integer>(); //先取出无序序列的第一个元素 list.add(arrays[0]); //从第二个元素依次遍历,放入辅助序列(有序)的合适位置 for(int index = 1; index<arrays.length; index++){ for(int listIndex = 0;listIndex<list.size();listIndex++){ //一直遍历,直到找到比自己大的数,放在这个数前面 if(arrays[index] < list.get(listIndex)){ list.add(listIndex, arrays[index]); break; } //如果遍历到末尾还没有找到比自己大的数,直接放最后一个位置 if(listIndex==list.size()-1 && list.get(listIndex) < arrays[index]){ list.add(arrays[index]); } } } for(int i = 0; i<list.size();i++){ arrays[i] = list.get(i); } }