Java中冒泡排序与选择排序

来源:互联网 发布:c语言中函数和 编辑:程序博客网 时间:2024/05/21 17:28

一.冒泡排序

1)定义:相邻两个数比较大小,然后交换位置

2) 分析:

原数 3 2 5 1  第一趟:  2 3 5 1  2 3 5 1  array.length-1-0  2 3 1 5 确定了一个数(把最大值放在最后面)  第二趟:  2 3 1 5  array.length-1-1  2 1 3 5 又确定了一个数  第三趟:  1 2 3 5  array.length-1-2 --->array.length-1-i

冒泡排序
2)代码

1:

public static void main(String[] args) {        //某一天 把冒泡排序敲下来   熟练工种        // TODO Auto-generated method stub       int[]array=new int[] {3,2,5,1};       //该方法没有返回值 实际上 这个方法操作的是原数组       //外层循环控制 比较的趟数       //内层循环控制 -1:避免数组越界       //内循环 -2:每一趟比较 确定一个数 就意味着 少比较一次       for(int i=0;i<array.length-1;i++) {            for(int j=0;j<array.length-1-i;j++) {                if(array[j]>array[j+1]) {                    //交换位置                    int temp=array[j];                    array[j]=array[j+1];                    array[j+1]=temp;                                    }            }        }        System.out.println(Arrays.toString(array));

2:

public class Demo03 {   //需求:封装一个函数 进行冒泡排序        public static  void sort(int []array) {              for(int i=0;i<array.length-1;i++) {                for(int j=0;j<array.length-1-i;j++) {                    if(array[j]>array[j+1]) {                        int temp=array[j];                        array[j]=array[j+1];                        array[j+1]=temp;                        }                }              }System.out.println(Arrays.toString(array));        }        public static void main(String[] args) {         //传入的数组 相当于把数组的首地址传过去        //注意:这里是地址的传递        //拿到地址 就可以随便的更改数组元素的位置        //这是sort函数中 就是对原数组 进行操作        int[]array=new int[] {3,2,5,1};        sort(array);    }}

内存分析
二.选择排序

1.定义:选择一个数 与 下一个数进行比较
(用这个数和数组中的每一个数进行比较)
一般来说,就选择第0个数交换位置
选择排序
2.代码

public class Demo04 {    public static void main(String[] args) {        int[]array=new int[] {3,2,5,1};        //外循环-1:最后一个数 不用比较了        //内循环 j=1开始 因为 array[0] 和array[0]不用比较        // 内循环 +i:每一趟比较 确定一个数        //         也就是说 每次都可以少比较一个数        for(int i=0;i<array.length-1;i++) {            for(int j=1+i;j<array.length;j++) {                /*                 * 分析: 谁 和 谁 进行交换                 * array[j] 和 array[i] 进行比较 交换位置                 *                  */                if(array[j]<array[i]) {                    //交换                                    int temp=array[j];                    array[j]=array[i];                    array[i]=temp;                }                           }        }        System.out.println(Arrays.toString(array));        // System.out.println(Arrays.sort(array));    }  }