排序算法—冒泡排序—Java
【摘要】 1、基本思想冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻的数,如果前面的数大于后面的数,则交换两个数的值。每一轮排序都会找到本轮交换过程中的最大值(也可以是最小值)。2、简单数据的排序过程/* 待排序数据:[7,4,3,6,1] 第一轮排序: [4,7,3,6,1] // 比较7和4,7大于4,交换位置 ...
1、基本思想
冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻的数,如果前面的数大于后面的数,则交换两个数的值。每一轮排序都会找到本轮交换过程中的最大值(也可以是最小值)。
2、简单数据的排序过程
/*
待排序数据:[7,4,3,6,1]
第一轮排序:
[4,7,3,6,1] // 比较7和4,7大于4,交换位置
[4,3,7,6,1] // 比较7和3,7大于3,交换位置
[4,3,6,7,1] // 比较7和6,7大于6,交换位置
[4,3,6,1,7] // 比较7和1,7大于1,交换位置
第二轮排序:
[3,4,6,1,7] // 比较4和3,4大于3,交换位置
[3,4,6,1,7] // 比较4和6,4小于6,不交换位置
[3,4,1,6,7] // 比较6和1,6大于1,交换位置 因为在上一轮中找到最大值7,所以本轮排序将不对7进行排序
第三轮排序:
[3,4,1,6,7] // 比较3和4,3小于4,不交换位置
[3,1,4,6,7] // 比较4和1,4大于1,交换位置 因为在上一轮中找到最大值6,所以本轮排序将不对6进行排序
第四轮排序:
[1,3,4,6,7] // 比较3和1,3大于1,交换位置 排序完成
*/
3、代码实现
//冒泡排序
public static void bubbleSort(int[] arr){
//为方便交换数据的值,声明的临时变量
int temp = 0;
//定义一个标记变量,检测本轮排序是否交换过数据
boolean flag = false;
//进行 (数据个数 - 1)轮排序
for(int i = arr.length - 1;i > 0;i--){
//第i轮排序,需要比较(i - 1)次
for(int j = 0;j < i;j++){
//按照从小到大的顺序排序
//当前面的数值比后面的数值大,则交换
if(arr[j] > arr[j + 1]){
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
//已交换
flag = true;
}
}
//如果本轮未交换数据,表示排序完成
if(!flag){
break;
}
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)