耐心排序
2015-08-09 14:26
176 查看
import java.math.* ; import java.util.* ; /** * */ public class Test extends Base{ public static void main(String[] args) throws Exception{ int[] arr = getRandomArr() ; println(arr); patienceSort(arr , arr.length ); println(arr); println(); } public static void patienceSort(int[] arr, int n ){ ArrayList<LinkedList<Integer>> list = new ArrayList<LinkedList<Integer>>() ; LinkedList<Integer> linkedList = new LinkedList<Integer>() ; linkedList.add(arr[0]) ; list.add(linkedList); boolean needNewPile = true ; for (int i = 1 ; i < n ; i++){ needNewPile = true ; for (int j = 0; j < list.size() ; j++){ if (arr[i] < list.get(j).get(0)){ list.get(j).addFirst(arr[i]) ; needNewPile = false ; break ; } } if (needNewPile){ LinkedList<Integer> newLinkedList = new LinkedList<Integer>() ; newLinkedList.addFirst(arr[i]) ; list.add(newLinkedList); } } int k = 0 ; for (int i = 0; i < list.size(); i++) { int len = list.get(i).size() ; for (int j = 0; j < len; j++) { arr[k++] = list.get(i).removeFirst(); } } } public static void insertSort(int[] arr){ int j = 0 , k = 0 ; for (int i = 1 ; i < arr.length ; i++ ){ for (j = i - 1; j >= 0 ; j--){ if (arr[i] > arr[j]){ break; } } if(j != i-1){ int temp = arr[i] ; for (k = i-1 ; k > j ; k-- ){ arr[k+1] = arr[k] ; } arr[k+1] = temp ; } } } }
相关文章推荐
- 数据挖掘常用的的R包和函数的集合
- JPA下利于快速开发、快速调整业务的程序结构设计
- 2015/8/9 到家了,学完了CodeCademy的Python
- Android中用PULL解析XML
- leetcode 108 —— Convert Sorted Array to Binary Search Trees
- 重复子串问题(一):寻找最长重复子串
- Dungeon Master
- Dungeon Master 分类: 搜索 POJ 2015-08-09 14:25 4人阅读 评论(0) 收藏
- Androd WebView中的图片浏览及缩放
- 19 擅长排列的小明【dfs】
- oc中的工厂设计模式
- Spring基于自定义注解的用户认证
- Spring实现定时任务
- 线程小结
- Android中使用友盟时用Ant进行多渠道打包及相关问题
- block深入学习
- 尝试使用枚举类存储静态变量
- 如何在需求不断改变的情况下愉快的写代码
- Dexpress 中 grid的使用
- Services