冒泡排序

来源:互联网 发布:ubuntu samba用户名 编辑:程序博客网 时间:2024/05/22 13:23

冒泡排序的思想:

将相邻的俩个数进行比较换位

比如有以下一个数组:

int[] arr = {5,1,4,8,2};

第一趟:  第一次5与1比较 5-1换位; 得到1 5 4 82 第二次:5 - 4 换位:得到:1 4 5 8 2 第三次: 5与 8换位,得到: 1 4 5 8 2 第四次: 8 与2换位: 得到1 4 5 2 8

第一趟得到一个最大数: 排在最后面

第二趟:  同样进行冒泡排序: 第一次 1与4  第二次: 4与5  第三次:5与2比较 进行换位: 得到1 4 2 5 8

第二趟:得到一个倒数第二大的数,排在倒数第二位:

第三躺: 第一次: 1与4 第二次: 4与2比较进行换位: 得到1 2 4 5 8

第三躺:得到一个倒数第三大的数,排在倒数第三位;

第四趟:  1与2比较,不用换位:  比较完毕

从这个过程中: 我们可以看出: 躺数;就是数组长度-1,衍生而来的就是,我们可以利用这个方法,选出数组中最大的数,当然就在第一趟中解决;

代码实现: 这个过程,一看就需要利用循环来解决.并且一层循环无法解决,需要用到双层循环;

这里需要用的一个只是点就是,交换值

int x =5,y=10; //定义两个变量

int temp = x;    //定义第三临时变量temp并提取x值

x = y;        //把y的值赋给x y = temp;      //然后把临时变量temp值赋给y       

代码实现:

    int []  arr ={9,8,7,6,5,4};

    for(int i =0; i< arr.length-1;i++) {
                for(int j=0;j<arr.length-1;j++) {
                    if(arr[j] > arr[j+1] ) {
                        int temp = arr[j+1];
                        arr[j+1] = arr[j];           // 值的交换;
                        arr[j]=temp;
                        
                        
                    }
                    
                    }
            
                }
                for(int i = 0; i< arr.length;i++) {
                    if(i==arr.length-1) {
                        System.out.println(arr[i]);
                        break;                 // 这里是为了打印最后一个值时,不打印","号;
                    }
                    
                    System.out.print(arr[i] + " ,");
                    System.out.println("数组中最大的值是" + arr[5]);
                }