冒泡算法和选择排序

来源:互联网 发布:c语言线程睡眠 编辑:程序博客网 时间:2024/05/29 12:32

冒泡算法和选择排序
1. 冒泡排序
冒泡排序:即比较相邻的两个数,如果前面的数大于后面的数,那么他们就调换位置,让大的数位与后面,然后继续与其相邻的数作比较,从第一对数一直比较到最后一对数,所以最后面的数应该是最大的数,然后在针对出最后一个数以外的所有数重复以上步骤,之后持续每次比上一次少掉最后一个数的其他数重复比较的步骤,直到没有任何一对数字做比较
这里附上代码说明:

package com.edu_03;public class ArraySortDemo {    public static void main(String[] args) {        //使用冒泡排序给数组int[] arr = { 24, 69, 80, 57, 13 };进行排序        //创建一个数组        int[] arr = { 24, 69, 80, 57, 13 };/*      //第一次排序        for (int i = 0; i < arr.length - 1 - 0; i++) {            //java.lang.ArrayIndexOutOfBoundsException            //-1是为了防止数组越界,-0是为了提高比较的效率            if (arr[i]>arr[i+1]) {                //找一个中间变量                int temp = arr[i];                arr[i] = arr[i+1];                arr[i+1] = temp;            }        }        //打印数组        printArr(arr);        //第二次排序        for (int i = 0; i < arr.length - 1 - 1; i++) {            //java.lang.ArrayIndexOutOfBoundsException            if (arr[i]>arr[i+1]) {                //找一个中间变量                int temp = arr[i];                arr[i] = arr[i+1];                arr[i+1] = temp;            }        }        //打印数组        printArr(arr);        //第三次排序        for (int i = 0; i < arr.length - 1 - 2; i++) {            //java.lang.ArrayIndexOutOfBoundsException            if (arr[i]>arr[i+1]) {                //找一个中间变量                int temp = arr[i];                arr[i] = arr[i+1];                arr[i+1] = temp;            }        }        //打印数组        printArr(arr);        //第四次排序        for (int i = 0; i < arr.length - 1 - 3 ; i++) {            //java.lang.ArrayIndexOutOfBoundsException            if (arr[i]>arr[i+1]) {                //找一个中间变量                int temp = arr[i];                arr[i] = arr[i+1];                arr[i+1] = temp;            }        }        //打印数组        printArr(arr);*/        System.out.println("--------------------");        //使用for循环改进上面的代码        for (int j = 0; j < arr.length-1; j++) {//外层循环控制比较的次数            for (int i = 0; i < arr.length - 1 - j ; i++) {                //-1是为了防止数组越界,-j是为了提高比较的效率                if (arr[i]>arr[i+1]) {                    //找一个中间变量                    int temp = arr[i];                    arr[i] = arr[i+1];                    arr[i+1] = temp;                }            }           }        printArr(arr);    }    //写一个方法打印数组    public static void printArr(int[] arr){        for (int i = 0; i < arr.length; i++) {            System.out.print(arr[i]+"  ");        }        System.out.println();    }}

这里画图做下解释
这里写图片描述

选择排序

  1. 选择排序:即拿出第一个数依次与处于他后面的数两两比较,选出较小的数放在前边,最总最小的数位于数组的最前端;然后依次对其他数进行上述操作,直到没有任何一对数字做比较。
    这里是一段代码说明
package com.edu_03;public class ArraySortDemo2 {    public static void main(String[] args) {        //使用选择排序对数组进行排序:int[] arr = { 24, 69, 80, 57, 13 };        int[] arr = { 24, 69, 80, 57, 13 };/*      //第一次比较        int x = 0;        for (int i = x+1; i < arr.length; i++) {            if (arr[x]>arr[i]) {                int temp = arr[x];                arr[x] = arr[i];                arr[i] = temp;            }        }        printArr(arr);        //第二次比较        x = 1;        for (int i =  x+1; i < arr.length; i++) {            if (arr[x]>arr[i]) {                int temp = arr[x];                arr[x] = arr[i];                arr[i] = temp;            }        }        printArr(arr);        //第三次比较        x = 2;        for (int i =  x+1; i < arr.length; i++) {            if (arr[x]>arr[i]) {                int temp = arr[x];                arr[x] = arr[i];                arr[i] = temp;            }        }        printArr(arr);        //第四次比较        x = 3;        for (int i = x+1; i < arr.length; i++) {            if (arr[x]>arr[i]) {                int temp = arr[x];                arr[x] = arr[i];                arr[i] = temp;            }        }        printArr(arr);*/        System.out.println("--------------------------");        //使用for循环改进上面的代码        for (int j = 0; j < arr.length-1; j++) {            for (int i = j+1; i < arr.length; i++) {                if (arr[j]>arr[i]) {                    int temp = arr[j];                    arr[j] = arr[i];                    arr[i] = temp;                }            }        }        printArr(arr);    }    //写一个方法打印数组        public static void printArr(int[] arr){            for (int i = 0; i < arr.length; i++) {                System.out.print(arr[i]+"  ");            }            System.out.println();        }}

这里画图解释一下
这里写图片描述

0 0
原创粉丝点击