当前位置: 代码迷 >> J2SE >> 高手求教!Java写的泛型冒泡法解决方案
  详细解决方案

高手求教!Java写的泛型冒泡法解决方案

热度:32   发布时间:2016-04-24 00:50:36.0
高手求教!!Java写的泛型冒泡法
Java code
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();    }}


------解决方案--------------------
Java code
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);
------解决方案--------------------
Java code
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();    }}
  相关解决方案