冒泡排序和插旗
冒泡排序的思路是用数组中一个值和其他值挨个比较,使用循环控制对比。
这里要设置两个循环,外层循环用于控制数组中作比较的值,内层循环用于控制这个作比较的值和其他值对比。
插旗则可以看成一个条件判断,满足条件则执行。
//冒泡排序和插旗 public class Demo04 { public static void main(String[] args) { int a[]={5,6,7,8,9,10,11}; int tmp; for (int i = 0; i < a.length-1; i++) {//冒泡排序,外层循环控制循环次数, // 变量i从0开始赋值,执行次数总是比数组空间少1; //插旗位标志:目的在数组已经有序的时候结束排序。 boolean isChange=false;//插旗 for (int j = 0; j < a.length-1-i; j++) {//内层循环控制对比次数, // 此处用-i控制对比次数,随着i变大,需要对比的数的减少 if(a[j]>a[j+1]){ tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; isChange=true;//只要程序有交换数组的情况,isChange就会变值; } } if(isChange==false){//如果程序执行完,isChange的值没有改变,则说明没有进行交换 System.out.println("数组在"+(i+1)+"轮排序后已经有序"); break; } } } } //插旗类似于C语言中设置一个变量num,只要执行完符合条件的语句就num++, // 结束后num值没变则说明没有执行那段程序

浙公网安备 33010602011771号