冒泡排序

来源:互联网 发布:张绪穆 知乎 编辑:程序博客网 时间:2024/06/05 20:05

public class Bubble {


    public static void main(String[] args) {
       
        int[] values={12,1,3,5,4,7,9,0};
        sort(values);
        for(int i=0;i<values.length;i++){
            System.out.print(values[i]);
        }
    }
   
    public static void sort(int[] values){
        int temp;
        for(int i=0;i<values.length;i++){ //执行values.length次
            for(int j=0;j<values.length-i-1;j++){
                if(values[j]>values[j+1]){//当前面的数大于后面的数是执行调换
                    temp=values[i];
                    values[i]=values[j+1];
                    values[j+1]=temp;
                }
            }
        }
    public static void sort(int[] values){
        int temp;
        for(int i=0;i<values.length;i++){ //执行values.length次
            for(int j=i;j<values.length;j++){
                if(values[i]>values[j]){//当前面的数大于后面的数是执行调换
                    temp=values[i];
                    values[i]=values[j];
                    values[j]=temp;
                }
            }
        }
       
    }

}
 


public class Bubble {//建立一个名为Bubble的类
public static void main(String args[]){//建立main函数
int nums[]={99,-10,100123,18,-978,5623,463,-9,287,49};//建立名为nums的数组,包含10个数,并为这10个数初始化值
int a,b,t;建立3个整型变量

System.out.print("Original array is:");//屏幕输出Original array is:这段字符
for(int i=0;i<10;i++)//循环
System.out.print(" "+nums[i]);//屏幕上依次显示空格+nums[0]的数值空格+nums[1]……+nums[9]
System.out.println();
for(a=1;a<10;a++)
for(b=0:b<10-a:b++){
if(nums[b-1]>nums[b]){//当前面的数大于后面的数是执行调换
t=nums[b-1];
nums[b-1]=nums[b];
nums[b]=t;
}
}//一段for语句循环,意思是把数组里大的数吊到前面,小的放到后面
System.out.print("Sroted array is:");屏幕上输出Sroted array is:这段字符
for(int i=0;i<10;i++)//循环语句为后面输出nums里的数作准备
System.out.print(" "+nums[i]);//在屏幕上输出空格+nums[0]空格+nums[1]……nums[9]
System.out.println();//这句不太清楚,可能是输出空白行
}
}
冒泡排序有“大的下沉“和“小的上浮“两种,那么对于提问者给出的这段程序属于"小的上浮",二楼这位说的这种是"大的下沉",写成java,循环段应写成: for(a=1;a<10;a++) for(b=0:b<10-a:b++) { if b[i]>b[i+1] t=b[i];b[i]=b[i+1];b[i+1]=t; } 另外,一楼那位仁兄的循环解释有一句说反了,“当后面的数大于前面的数是执行调换”,他的语句表示的是“当前面的数大于后面的数时执行调换”
 就是把大的沉下去,小的浮上来
例如:985420
第一趟:854209
就是将最上面的两个数比较9>8所以把8浮上来,9沉下去,变为895420,又因9>5,所以把9沉下去,5浮上来变为859420,以此类推。。。
第二趟:542089
第三趟:420589
第三趟:204589
第四趟:024589