排序算法在编程中有着举足轻重的地位。排序能够让人们很直观的看到数据的意义。在Java编程中,有很多排序算法,例如插入排序、冒泡排序、归并排序、快速排序等。此次让我主要讲解冒泡排序算法。
1.冒泡排序算法的定义。
冒泡排序算法多次遍历需要多次遍历数组,在每次遍历中。比较连续相邻的元素。如果某一一对元素是降序(前面的大于后面的),则交换它们的值;否则,保持不变。
由于较小的值像气泡一样逐渐浮上顶部,而较大的值沉像底部,所以称这种技术为冒泡排序。
2.冒泡排序算法的过程
例如数组:{2,9,5,4,8,1}
首先,进行第1次遍历
首先比较第一对元素(2和9),因为已经排好序,不需要交换
然后比较第二对元素(9和5),交换
然后比较第三对元素(9和4),交换
然后比较第四对元素(9和8),交换
然后比较第五对元素(9和1),交换
然后进行第2次遍历
首先比较第一对元素(2和5),因为已经排好序,不需要交换
然后比较第二对元素(5和4),交换
然后比较第三对元素(5和8),因为已经排好序,不需要交换
然后比较第四对元素(8和1),交换
经过第1次遍历,最大数(9)已经放在末尾,在第2次遍历中,依次对元素进行比较,因为最后一个已经排好序,所以不需要考虑最后一对元素。依次继续进行遍历,直到 它们排好序。
对于任意数组,变换如下所示
3.冒泡排序算法的实现
public class BubbleSort {
public static void main(String[] args) {
int [] num={3,2,6,1};
mothod1(num);
System.out.println(Arrays.toString(num));
}
private static void mothod1( int [] num) {
boolean neednext = true; //如果两个元素之间发生了交换,则继续遍历下一个,否则,已经排好序,无需在遍历下一个,程序结束。
for (int i = 1; i < num.length&&neednext; i++) {
neednext =false;
for (int j = 0; j < num.length - i; j++) {
if (num[j]>num[j+1]){
int temp = num[j+1];
num[j+1] = num[j];
num[j]=temp;
neednext=true;
}
}
}
}
}
运行结果:
[1, 2, 3, 6]