概述
冒泡排序 详解
原理
首先 我们有一个无序的数组 例如:
int[] num = {5,6,8,4,1,7};
我们把第一次要把最大的数排到整个数组的最后面 得到如下数组
num = {5,6,4,1,7,8};
具体实现原理就是 如果前面一个数比后面的大就交换两个数的位置
5 和 6 比较 5小 位置不变 5,6,8,4,1,7
再 6 和 8 比较 6小 位置不变 5,6,8,4,1,7
再 8 和 4 比较 8大 交换4和8的位置 5,6,4,8,1,7
再 8 和 1 比较 8大 交换1和8的位置 5,6,4,1,8,7
再 8 和 7 比较 8大 交换7和8的位置 5,6,4,1,7,8
我们 再将经过上面步骤处理后的数组 {5,6,4,1,7,8 } 再次执行上面的步骤
5 和 6 比较 5小 位置不变 5,6,4,1,7,8
再6 和 4 比较 4小 交换4和6的位置 5,4,6,1,7,8
再6 和 1 比较 1小 交换1和6的位置 5,4,1,6,7,8
再6 和 7 比较 6小 位置不变 5,4,1,6,7,8
再7 和 8 比较 7小 位置不变 5,4,1,6,7,8
我们 再将经过上面步骤处理后的数组 { 5,4,1,6,7,8 } 再次执行上面的步骤
5 和 4 比较 4小 交换5和4的位置 4,5,1,6,7,8
再5 和 1 比较 1小 交换1和5的位置 4,1,5,6,7,8
再5 和 6 比较 5小 位置不变 4,1,5,6,7,8
再6 和 7 比较 6小 位置不变 4,1,5,6,7,8
再7 和 8 比较 7小 位置不变 4,1,5,6,7,8
我们 再将经过上面步骤处理后的数组 {4,1,5,6,7,8 } 再次执行上面的步骤
4 和 1 比较 1小 交换4和1的位置 1,4,5,6,7,8
再4和 5 比较 4小 位置不变 1,4,5,6,7,8
再5 和 6 比较 5小 位置不变 1,4,5,6,7,8
再6 和 7 比较 6小 位置不变 1,4,5,6,7,8
再7 和 8 比较 7小 位置不变 1,4,5,6,7,8
这样我们就完成了排序
实现代码:
class BubbleSort{
/*
冒泡排序
*/
public static void main(String[] args){
int[] num = {5,6,8,4,1,7};
for(int j=0;j<num.length-1;j++){
/*
内层寻环第一次实现将最大的数放在最后一位
第二次实现将第二大的数放在倒数第二位
以此类推
*/
for (int i=0;i<num.length-1;i++ ){
if(num[i]>num[i+1]){
/*交换两数的值
其实和
int temp = num[i];
num[i] = num[i+1];
num[i+1] = temp;
效果一样
*/
num[i] = num[i+1]^num[i];
num[i+1] = num[i+1]^num[i];
num[i] = num[i+1]^num[i];
}
}
}
for (int a : num ){
System.out.println(a);
}
}
}
代码优化
通过原理部分的分析我们可以看到 第一次 我们要比较6次
第二次的时候最后一位已经确定 所以就只用比较5次
以此类推
所以我们对代码进行如下优化:
class BubbleSort{
/*
冒泡排序
*/
public static void main(String[] args){
int[] num = {5,6,8,4,1,7};
for(int j=0;j<num.length-1;j++){
/*
内层寻环第一次实现将最大的数放在最后一位
第二次实现将第二大的数放在倒数第二位
以此类推
*/
// 对内层循环的次数进行控制 让他比较的次数随外层次数的增加而减少
for (int i=0;i<num.length-1-j;i++ ){
if(num[i]>num[i+1]){
/*交换两数的值
其实和
int temp = num[i];
num[i] = num[i+1];
num[i+1] = temp;
效果一样
*/
num[i] = num[i+1]^num[i];
num[i+1] = num[i+1]^num[i];
num[i] = num[i+1]^num[i];
}
}
}
for (int a : num ){
System.out.println(a);
}
}
}
代码优化后 可以减少代码执行时间 提高代码运行效率
最后
以上就是时尚电话为你收集整理的冒泡排序_详解冒泡排序 详解的全部内容,希望文章能够帮你解决冒泡排序_详解冒泡排序 详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复