首页 > 代码库 > 冒泡排序
冒泡排序
思路:不断的将相邻的两个数进行比较,大的数(或小的)往后放(冒泡)。
通过相邻数据的交换来达到排序的目的。
附上代码:
package cn.qujianlei.easy; public class BubbleSortDemo { public static void bubbleSort(int...a){ for(int i = 0;i<a.length-1;i++){ for(int j=0;j<a.length-1-i;j++){ if(a[j]>a[j+1]){ a[j]=a[j]^a[j+1]; a[j+1]=a[j]^a[j+1]; a[j]=a[j]^a[j+1]; } System.out.print(" 第"+(i+1)+"步中的第("+(j+1)+")分步:"); for(int k=0;k<a.length;k++){ System.out.print(" "+a[k]); } System.out.println(); } System.out.print("第"+(i+1)+"步排序结果:"); for(int k=0;k<a.length;k++){ System.out.print(" "+a[k]); } System.out.println(); } } public static void main(String[] args) { int []shuzu={26,13,8,4,1}; int i; System.out.println("排序前的数组为:"); for(i=0;i<shuzu.length;i++){ System.out.print(shuzu[i]+" "); } System.out.println(); bubbleSort(shuzu); System.out.println("排序后的数组为:"); for(i=0;i<shuzu.length;i++){ System.out.print(shuzu[i]+" "); } System.out.println(); } }
运行结果:(括号里的数表示内层循环,括号外表示外层循环)
排序前的数组为:
26 13 8 4 1
第0步中的第(0)分步: 13 26 8 4 1
第0步中的第(1)分步: 13 8 26 4 1
第0步中的第(2)分步: 13 8 4 26 1
第0步中的第(3)分步: 13 8 4 1 26
第0步排序结果: 13 8 4 1 26
第1步中的第(0)分步: 8 13 4 1 26
第1步中的第(1)分步: 8 4 13 1 26
第1步中的第(2)分步: 8 4 1 13 26
第1步排序结果: 8 4 1 13 26
第2步中的第(0)分步: 4 8 1 13 26
第2步中的第(1)分步: 4 1 8 13 26
第2步排序结果: 4 1 8 13 26
第3步中的第(0)分步: 1 4 8 13 26
第3步排序结果: 1 4 8 13 26
排序后的数组为:
1 4 8 13 26
---------------------------------------------------
附上图解:
注:后面的几步中的分步较少并不是因为没有进行比较,而是因为比较后不满足if语句(前面大于后面),所以没有交换(输出).
冒泡排序思路简单,但是效率低。
冒泡排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。