乐于学习、乐于分享、乐于总结

编程是一门技术,更是一门艺术

java算法:使用冒泡算法对任何对象排序

1.普通的冒泡排序方法只能对数组进行排序


 public static void bubbleSort(int[] numbers) {
  int temp; 
  boolean flag = true;
  int size = numbers.length;
  for (int i = 1; flag && i <= size - 1; i++) {
   flag = false;
   for (int j = 0; j < size - i; j++) {
    if (numbers[j] < numbers[j + 1]) {  

     temp = numbers[j];
     numbers[j] = numbers[j + 1];
     numbers[j + 1] = temp;
     flag = true;
    }
   }
  }
 }

2.对任何对象都可以进行排序


 /**
  * 用冒泡排序对任何对象排序

   *extends 在这里不表示继承的关系,而是类型的限定

  *Comparable类 用于比较两个对象的大小
  *
  * @param x 对象
  */
 public static <T extends Comparable<T>> void bubbleSort(T[] x) {
  T temp;
  boolean flag = true;
  int size = x.length;
  for (int i = 1; flag && i <= size - 1; i++) {
   flag = false;
   for (int j = 0; j < size - i; j++) {
    if (x[j].compareTo(x[j + 1]) > 0) {
     temp = x[j];
     x[j] = x[j + 1];
     x[j + 1] = temp;
     flag = true;
    }
   }

  }

 }

3.在不知道具体的对象时,应该怎么使用冒泡排序

/*

*传入一个带泛型的比较器-->Comparator

*/
 public static <T extends Comparable<T>> void bubbleSort(T[] x,Comparator<T> comparator) {
  T temp;
  boolean flag = true;
  int size = x.length;
  for (int i = 1; flag && i < size - 1; i++) {
   flag = false;
   for (int j = 0; j < size - i; j++) {
    if (comparator.compare(x[j], x[j + 1]) > 0) {
     temp = x[j];
     x[j] = x[j + 1];
     x[j + 1] = temp;
     flag = true;
    }

   }

  }

 }

 

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011659172/article/details/17148391
个人分类: java 编程试题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭