通用冒泡排序Java程序

时间:2020-01-09 10:35:28  来源:igfitidea点击:

在这篇文章中,我们将看到如何以Java的泛型类编写冒泡排序程序,该程序可用于不同数据类型的数组。

冒泡排序-Java通用类

在用于冒泡排序的通用类中,我们使用有界参数将类型限制为Comparable类型。这样做是因为我们确实需要比较要使用Comparable的compareTo()方法进行排序的元素。

import java.util.Arrays;

public class BubbleSortGeneric<T extends Comparable<? super T>> {
  T[] array;
  BubbleSortGeneric(T[] array){
    this.array = array;
  }
  
  private T[] bubbleSort(){
    for(int i = array.length; i > 1; i--){
      for(int j = 0; j < i - 1; j++){
        //if greater swap elements
        if(array[j].compareTo(array[j+1]) > 0){
          swapElements(j, array);
        }
      }            
    }
    return array;
  }
  private void swapElements(int index, T[] arr){
    T temp = arr[index];
    arr[index] = arr[index+1];
    arr[index+1] = temp;        
  }
  public static void main(String[] args) {
    Integer[] intArr = {47, 85, 62, 34, 7, 10, 92, 106, 2, 54};
    BubbleSortGeneric<Integer> bsg1 = new BubbleSortGeneric<Integer>(intArr);
    Integer[] sa1 = bsg1.bubbleSort();
    System.out.println("Sorted array- " + Arrays.toString(sa1)); 
    
    String[] strArr = {"Earl", "Robert", "Asha", "Arthur"};
    BubbleSortGeneric<String> bsg2 = new BubbleSortGeneric<>(strArr);
    String[] sa2 = bsg2.bubbleSort();
    System.out.println("Sorted array- " + Arrays.toString(sa2));
  }
}

输出:

Sorted array- [2, 7, 10, 34, 47, 54, 62, 85, 92, 106]
Sorted array- [Arthur, Asha, Earl, Robert]