package com.fourinone; import java.util.Arrays; final class ArrayInt extends ArrayAdapter implements ArrayAdapter.ListInt{ private int arrsize = 0x20000; private int[] arrint; private int arrindex = 0; public ArrayInt(){ super(); arrint = new int[arrsize]; objarr[objindex++]=arrint; } public void add(int[] initarr){ for(int i:initarr) add(i); } public void add(int i){ if(arrindex==arrint.length){ arrint = new int[arrsize]; auto(); objarr[objindex++]=arrint; arrindex=0; } arrint[arrindex++]=i; } public int size(){ //System.out.println("objindex:"+objindex+",arrindex:"+arrindex); return (objindex-1)*arrsize+arrindex; } public void set(int index, int i){ ((int[])objarr[index/arrsize])[index%arrsize]=i; } public int get(int index){ return ((int[])objarr[index/arrsize])[index%arrsize]; } public void sort(){ IntSort is = new IntSort(); is.arrsort(0, size()-1); } public int[] sort(int[] arr){ IntSort is = new IntSort(arr); is.intsort(0, arr.length-1); return arr; } public int[] toArray(){ int s = size(); int[] m = new int[s]; for(int i=0;i<s;i++) m[i]=get(i); return m; } public void order(int[] arr){ Arrays.sort(arr); } private class IntSort{ private int[] arr; IntSort(){} IntSort(int[] arr){ this.arr = arr; } private void intsort(int k, int m) { int j=m,i=k; for(;i<j;i++){ int vai = arr[i]; while(vai<=arr[i+1]){ if(j==i+1)break; int vai1 = arr[i+1]; arr[i+1]=arr[j]; arr[j--]=vai1; } if(vai>arr[i+1]){ arr[i]=arr[i+1]; arr[i+1]=vai; } } if(i-1>k) intsort(k,i-1); if(m>i) intsort(i,m); } private void arrsort(int k, int m) { int j=m,i=k; for(;i<j;i++){ int vai = get(i); while(vai<=get(i+1)){ if(j==i+1)break; int vai1 = get(i+1); set(i+1, get(j)); set(j--, vai1); } if(vai>get(i+1)){ set(i, get(i+1)); set(i+1, vai); } } if(i-1>k) arrsort(k,i-1); if(m>i) arrsort(i,m); } } }