您的位置:首页 > 其它

耐心排序

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 ;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: