您的位置:首页 > 编程语言 > Java开发

用JAVA实现排序算法之一:冒泡排序

2010-11-22 14:33 537 查看
最近一段时间在努力学习回顾JAVA方面的相关知识,这其中涉及到了几种常用的排序算法。笔者虽知用JAVA实现简单的排序算法早已不是什么新鲜事,类似的实现更是多如牛毛,而笔者在这里之所以老调重弹,最基本的出发点无非就是巩固已学知识,夯实基础罢了。所以,在这里,笔者将不厌其烦地使用JAVA实现几种常用的排序算法,包括冒泡排序、插入排序、选择排序、快速排序和希尔排序等。本篇文章介绍的是冒泡排序算法。

冒泡排序算法的基本思想是:首先将第n-1个记录的关键字和第n个记录的关键字进行比较,若为“逆序”(即L.r
.key<L.r[n-1].key),则将两个记录交换之,然后比较第n-2个记录和第n-1个记录的关键字。依次类推,直至第1个记录的关键字和第2个记录的关键字比较过为止。这是第一趟起泡排序,其结果是使得关键字最小的记录被安置到第一个记录的位置上;然后进行第二趟起泡排序,对后面的n-1个记录进行同样的操作,其结果是使关键字次小的记录被安置到第2个记录的位置;一般地,第i趟起泡排序是从L.r
到L.r[i]依次比较相邻两个记录的关键字,并在“逆序”时交换相邻记录,其结果是这n-i+1个记录中关键字最小的记录被交换到第i的位置上。整个排序过程需要进行K(1≤k<n)趟起泡排序,显然,判别起泡排序结束的条件应该是“在一趟排序过程中没有进行过交换记录的操作”。

以下是冒泡排序的JAVA代码实现:

package cn.simon.sort;
public class BubbleSort {
public static <T extends Comparable<? super T>> void bubbleSort(T[] array) {
for (int i = 0; i < array.length; i++) {
for (int j = array.length - 1; j > i; j--) {
if (array[j].compareTo(array[j - 1]) < 0) {
T temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
}
}
}
}

public static void main(String[] args) {
Integer[] testArray = {23, 25, 12, 42, 35};
BubbleSort.bubbleSort(testArray);
System.out.println("The result is:");
for (Integer item : testArray) {
System.out.print(item);
System.out.print(' ');
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: