日期:2014-05-20 浏览次数:20689 次
import java.util.Random; import java.util.Scanner; class ArrayBubble<E> { private E[] a; private int nElements; public ArrayBubble(int max) { a = (E[])new Object[max]; nElements = 0; } public void insert(E value) { a[nElements++] = value; } public void display() { for (int j = 0;j < nElements; j++) { System.out.print(a[j] + " "); } System.out.println(); } public E[] getArray() { return a; } } class BubbleSort<E extends Comparable<E>> { public void sort(E[] a, int nElements) { for (int out = 0; out < nElements - 1; out++) { for (int in = 0; in < nElements - out - 1; in++) { if (a[in].compareTo(a[in + 1]) > 0) { E temp = a[in]; a[in] = a[in + 1]; a[in + 1] = temp; } } } } } public class BubbleSortApp { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入数组大小: "); int size = scanner.nextInt(); Random rnd = new Random(); ArrayBubble<Integer> myArray = new ArrayBubble<Integer>(size + 10); for (int i = 0; i < size ;i++) { myArray.insert((Integer)rnd.nextInt(100)); } System.out.println("原数组如下:"); myArray.display(); new BubbleSort<Integer>().sort(myArray.getArray(), size); System.out.println("排序后的数组如下"); myArray.display(); } }
public ArrayBubble(int max, Class<E> clazz) //加一个类型参数 { //a = (E[])new Object[max]; a = (E[])Array.newInstance(clazz, max); //用反射的方式生成实例 nElements = 0; } //调用 ArrayBubble<Integer> myArray = new ArrayBubble<Integer>(size + 10, Integer.class);
------解决方案--------------------
import java.util.*; class ArrayBubble<E> { private E[] a; private int nElements; //构造器改成这样 //构造器改成这样 //构造器改成这样 public ArrayBubble(E[] a) { this.a = a; nElements = 0; } public void insert(E value) { a[nElements++] = value; } public void display() { for (int j = 0;j < nElements; j++) { System.out.print(a[j] + " "); } System.out.println(); } public E[] getArray() { return a; } } class BubbleSort<E extends Comparable<E>> { public void sort(E[] a, int nElements) { for (int out = 0; out < nElements - 1; out++) { for (int in = 0; in < nElements - out - 1; in++) { if (a[in].compareTo(a[in + 1]) > 0) { E temp = a[in]; a[in] = a[in + 1]; a[in + 1] = temp; } } } } } public class BubbleSortApp { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入数组大小: "); int size = scanner.nextInt(); Random rnd = new Random(); //下面一行改成这样 //下面一行改成这样 //下面一行改成这样 ArrayBubble<Integer> myArray = new ArrayBubble<>(new Integer[size+10]); for (int i = 0; i < size ;i++) { myArray.insert((Integer)rnd.nextInt(100)); } System.out.println("原数组如下:"); myArray.display(); new BubbleSort<Integer>().sort(myArray.getArray(), size); System.out.println("排序后的数组如下"); myArray.display(); } }