黑马程序员技术交流社区
标题:
冒泡排序
[打印本页]
作者:
刘武洲
时间:
2018-10-6 12:31
标题:
冒泡排序
作为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]);
}
}
}
数组排列过程.png
(28.97 KB, 下载次数: 2)
下载附件
2018-10-6 12:00 上传
数组元素排序过程
作者:
刘武洲
时间:
2018-10-6 12:32
第一次使用画图功能,画得比较拙劣,大家见谅。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2