`

Java List集合冒泡法排序的两种实现

    博客分类:
  • Java
 
阅读更多

 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

  冒泡排序算法的运作如下:

 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

 针对所有的元素重复以上的步骤,除了最后一个。

 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

 

方法一:

1. 如果集合的值为int类型

 

 

public class TT {

	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		list.add(76);
		list.add(4);
		list.add(786);
		list.add(43);
		list.add(21);
		list.add(432);
		list.add(10);
		for (int i = 0; i < list.size() - 1; i++) {
			for (int j = 1; j < list.size() - i; j++) {
				Integer a;
				if ((list.get(j - 1)).compareTo(list.get(j)) > 0) { // 比较两个整数的大小

					a = list.get(j - 1);
					list.set((j - 1), list.get(j));
					list.set(j, a);
				}
			}
		}
		for (Integer s : list) {
			System.out.println(s.intValue());
		}
	}
}

 

 

2. 如果集合的值为string类型("11"),并且包含空值(此处用"-"代替)

 

 

public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("-");
		list.add("76");
		list.add("-");
		list.add("786");
		list.add("43");
		list.add("-");
		list.add("432");
		list.add("10");

		List<String> nullList = new ArrayList<String>();
		List<String> dataList = new ArrayList<String>();

		for (String s : list) {
			if ("-".equals(s)) {
				nullList.add(s);
			} else {
				dataList.add(s);
			}
		}

		for (int i = 0; i < dataList.size() - 1; i++) {
			for (int j = 1; j < dataList.size() - i; j++) {
				Integer a = Integer.parseInt(dataList.get(j - 1));
				Integer b = Integer.parseInt(dataList.get(j));

				if (a.compareTo(b) > 0) { // 比较两个整数的大小

					String temp = dataList.get(j - 1);
					dataList.set((j - 1), dataList.get(j));
					dataList.set(j, temp);
				}
			}
		}

		dataList.addAll(nullList);
		list = dataList;

		for (String s : list) {
			System.out.println(s);
		}
	}
 

 

 

方法二:

直接用Collections.sort进行排序

 

先定义ValComparator类, 

 

import java.util.Comparator;

public class ValComparator implements Comparator<String> {

	public int compare(String o1, String o2) {
		int seq1 = 0;
		int seq2 = 0;
		try {
			seq1 = Integer.parseInt(o1);
			seq2 = Integer.parseInt(o2);
		} catch (Exception e) {
		}

		return seq1 - seq2;
	}
}
 

 

主程序:

 

public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("76");
		list.add("786");
		list.add("43");
		list.add("432");
		list.add("10");

		Collections.sort(list, new ValComparator());

		for (String s : list) {
			System.out.println(s);
		}
	}
 

 

 

 

分享到:
评论

相关推荐

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例057 用List集合传递学生信息 70 实例058 用TreeSet生成不重复自动排序 随机数组 71 实例059 Map映射集合实现省市级联选择框 73 第4章 字符串处理技术 75 4.1 格式化字符串 76 实例060 把数字格式化为货币字符串 ...

    java范例开发大全源代码

     实例74 冒泡排序法 102  实例75 数组递增排序 103  实例76 部分数组递增排序 103  实例77 选择排序法 104  实例78 快速排序法 106  第6章 字符串(教学视频:138分钟) 108  6.1 字符串类String...

    java范例开发大全

    实例74 冒泡排序法 102 实例75 数组递增排序 103 实例76 部分数组递增排序 103 实例77 选择排序法 104 实例78 快速排序法 106 第6章 字符串(教学视频:138分钟) 108 6.1 字符串类String 108 实例79 创建字符串类 ...

    Java范例开发大全 (源程序)

     实例74 冒泡排序法 102  实例75 数组递增排序 103  实例76 部分数组递增排序 103  实例77 选择排序法 104  实例78 快速排序法 106  第6章 字符串(教学视频:138分钟) 108  6.1 字符串类String 108 ...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    180多页面试题,前前后后不间断的更新了两年,准备换工作时,总是拿来看看,有比较好的面试题,也不间断的更新,面试题目录如下: 【基础】面向对象的特征有哪些方面 13 抽象 13 继承 13 封装 13 多态性 13 【基础】...

    java范例开发大全(pdf&源码)

    实例74 冒泡排序法 102 实例75 数组递增排序 103 实例76 部分数组递增排序 103 实例77 选择排序法 104 实例78 快速排序法 106 第6章 字符串(教学视频:138分钟) 108 6.1 字符串类String 108 实例79 创建字符串类 ...

    Java范例开发大全(全书源程序)

    实例74 冒泡排序法 102 实例75 数组递增排序 103 实例76 部分数组递增排序 103 实例77 选择排序法 104 实例78 快速排序法 106 第6章 字符串(教学视频:138分钟) 108 6.1 字符串类String 108 实例79 创建...

Global site tag (gtag.js) - Google Analytics