
import java.security.SecureRandom;
import java.util.Comparator;
public class Exercise23_01 {
public static void main(String[] args) {
Integer[] list1 = new Integer[10];
for (int i = 0; i < list1.length; i++)
list1[i] = new SecureRandom().nextInt(20);
System.out.println(Arrays.toString(list1));
bubbleSort(list1, new SortComparator<>());
System.out.println(Arrays.toString(list1));
String[] list2 = {"China", "Babylon", "Paris", "america", "India", "Japan"};
System.out.println(Arrays.toString(list2));
System.out.println(Arrays.toString(list2));
Double[] list3 = new Double[10];
for (int i = 0; i < list3.length; i++)
list3[i] = Math.random() * 20;
System.out.println(Arrays.toString(list3));
bubbleSort(list3, new SortComparator<>());
System.out.println(Arrays.toString(list3));
public static extends Comparable> void bubbleSort(E[] list) {
for (int i = 1; i < list.length; i++) {
for (int j = 0; j < list.length - i; j++)
if (list[j].compareTo(list[j + 1]) > 0) {
public static void bubbleSort(E[] list, Comparator super E> comparator) {
for (int i = 1; i < list.length; i++) {
for (int j = 0; j < list.length - i; j++)
if (comparator.compare(list[j], list[j + 1]) > 0) {
static class SortComparator implements Comparator {
public int compare(E o1, E o2) {
if (o1 instanceof Comparable) {
if (((Comparable) o1).compareTo(o2) > 0) return 1;
else if (((Comparable) o1).compareTo(o2) < 0) return -1;
if (o1.hashCode() > o2.hashCode())
else if (o1.hashCode() < o2.hashCode())

