05
public class Test2305 {
public static void main(String[] args) {
Integer[] list = {2, 3, 2, 5, 6, 1, -2, 3, 14, 12};
heapSort(list);
for (int i = 0; i < list.length; i++) {
System.out.print(list[i] + " ");
}
}
public static <E extends Comparable<E>> void heapSort(E[] list) {
Heap<E> heap=new Heap<>();
for(int i=0;i<list.length;i++)
heap.add(list[i]);
for(int i=0;i<list.length;i++)
list[i]=heap.remove();
}
}
08
public class Test2308 {
public static void main(String[] args) {
int[] a=new int[10];
for(int i=0;i<a.length;i++)
a[i]=(int)(Math.random()*100);
radixSort(a);
}
private static void radixSort(int[] a) {
// TODO Auto-generated method stub
ArrayList<Integer>[] bucket=new ArrayList[10];
for(int i=0;i<10;i++)
bucket[i]=new ArrayList<>();
for(int i=0;i<a.length;i++) {
bucket[a[i]%10].add(a[i]);
}
ArrayList<Integer> sorted=new ArrayList<>();
int exp=1;
while(sorted.size()!=10) {
ArrayList<Integer>[] newbucket=new ArrayList[10];
for(int i=0;i<10;i++)
newbucket[i]=new ArrayList<>();
for(int i=0;i<10;i++) {
exp*=10;
for(int j=0;j<bucket[i].size();) {
int radix=bucket[i].remove(j);
if((radix/exp==0)&&radix/exp%10==0) {
sorted.add(radix);
}
else {
newbucket[radix/exp%10].add(radix);
}
}
}
bucket=newbucket;
}
}
}
12
public class Test2312 {
public static void main(String[] args) {
int[] a=new int[1000000];
for(int i=0;i<a.length;i++)
a[i]=(int)(Math.random()*1000000);
radixSort(a);
}
private static void radixSort(int[] a) {
// TODO Auto-generated method stub
ArrayList<Integer>[] bucket=new ArrayList[10];
for(int i=0;i<10;i++)
bucket[i]=new ArrayList<>();
for(int i=0;i<a.length;i++) {
bucket[a[i]%10].add(a[i]);
}
ArrayList<Integer> sorted=new ArrayList<>();
int exp=1;
while(sorted.size()!=1000000) {
ArrayList<Integer>[] newbucket=new ArrayList[10];
exp*=10;
for(int i=0;i<10;i++)
newbucket[i]=new ArrayList<>();
for(int i=0;i<10;i++) {
for(int j=0;j<bucket[i].size();) {
int radix=bucket[i].remove(j);
if((radix/exp==0)&&radix/exp%10==0) {
sorted.add(radix);
}
else {
newbucket[radix/exp%10].add(radix);
}
}
}
bucket=newbucket;
}
for(int i=0;i<100;i++)
System.out.print(sorted.get(i)+" ");
}
}