作为Java基础班,国庆前刚结束day6课程的小白学员,在通往程序员的征程上,可以说还没有完全迈开步伐,处于整理衣装,准备干粮的阶段。真的不敢说自己发的是什么技术贴,作为编程新人的学习分享吧,希望各位大神多多批评指教。
言归正传,今天给大家分享的是数组排列中比较常用的一种算法--冒泡排序。(本帖参考了书籍《Java从入门到精通》)
1.冒泡排序:
指将数组中的元素进行重新排序,使得小数在前,大数在后,类似水中气泡往上升的动作。
2.冒泡排序的基本思想:
对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组前面,把较大的元素移动到数组后面(即交换两个元素的位置),该动作一次进行,最后使得整个数组中的所有元素达到从小到大的排列效果。
3.计算过程:
该算法由双层循环实现,其中外层循环用于控制排序轮数(分析,轮数应为数组长度减1次,因为最后一次循环只剩下一个数组元素,不需要对比);而内层循环用于对比临近元素的大小,以确定是否需要交换位置(对比和交换次数随着排序轮数一次减少,因为每一轮的排序都能确定需要对比的元素中的最大值,并且将它排到正确的位置,下一轮对比中,它不需要继续参与)。过程如图(附件)
4.算法实现:
public class Bubblesort {
public static void main(String[] args) {
int[] array = {63, 4, 24, 1, 3, 15};
for (int i = 1; i < array.length; i++) {//比较两个相邻的元素,较大的数往后冒泡
for (int j = 0; j < array.length - i; j++) {
if (array[j] > array[j + 1]) {//使用一个临时变量进行位置互换
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}//重新遍历排序结果
System.out.println("冒泡排序的结果:");
for (int k = 0; k < array.length; k++) {
System.out.println(array[k]);
}
}
}
|
|