什么是冒泡排序?
冒泡排序是n个数排序,将相邻两个数依次进行比较,将小数调在前面,大数放在后面,这样逐次比较,直至将最大的数移至最后;然后再将n-1个数继续比较,重复上面操作,直至比较完毕。
工具/原料
我使用Eclipse实现程序的功能
方法/步骤
实现构思:n个数进行从小到大排序,外循环第一次循环控制参加比较的次数为n-1,内循环找出n个数的最大值,移放在最后位置上;以后每次循环中其循环次数和参加比较的数依次减1.若n=0,即对6个数进行排序,排序过程序如下面的描述。
假设数组a中存放,在第一趟排序中:
第1次 a[0]和a[1]比软,即3和7比较,不交换 4 8 6 7 9 1;
第2次 a[1]和a[2]比软,即7和5比较,交换 4 6 8 7 9 1;
第3次 a[2]和a[3]比软,即7和6比较,交换 4 6 8 7 9 1;
第1次 a[3]和a[4]比软,即7和8比较,不交换 4 6 8 7 9 1;
第1次 a[4]和a[5]比软,即3和7比较,交换 4 6 8 7 9 1;
第一趟排序中,6个数比较了5次,把6个数中的最大值数8排在最后。数组中数据为:
第二趟排序:
第1次 a[0]和a[1]比软,即3和5比较,不交换 4 6 7 8 1 9;
第2次 a[1]和a[2]比软,即5和6比较,不交换 4 6 7 8 1 9;
第3次 a[2]和a[3]比软,即6和7比较,不交换 4 6 7 8 1 9;
第1次 a[3]和a[4]比软,即7和0比较,交换 4 6 7 1 8 9;
在第二趟排序中,最大数8不用参加比较,其余的5个数比较了4次,把期中的最大数7排在最后,排出;
以此类推:
第三趟比较3次,排出
第四趟比较2次,排出
第五趟比较1次,排出
最后还剩下1个数1,不需要再比,得到排序结果:
打开Eclipse,新建一个类,选择好源文件的保存位置和所要存放的包。
声明数组arr并存放6个元素.
利用for循环的嵌套解决问题。由之前的算法分析,可以看出对6个数据的数组升序排列只需进行5趟排序。所以外层循环控制排序趟数。
外层循环
内层循环控制每一趟排序的次数,并找出最大的数,放在最后位置(即沉底)。
内层循环
下面是源代码,方便大家参考。
import java.util.Arrays;
public class aadadasda {
public static void main(String[] args){
int[] arr=;
System.out.println("排序前数组为:");
for(int num:arr)
System.out.println("");
System.out.println("-----------------冒泡排序开始----------------");
for(int i=0;i
for(int j=0;j
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println("-----------------冒泡排序结束---------------");
System.out.println("排序后的数组为:");
System.out.println(Arrays.toString(arr));
}
}
打印出来的结果如图。
结果
领取专属 10元无门槛券
私享最新 技术干货