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 ;
}
}
}
}
耐心排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.