2022-02-28

1,快速排序又称分治排序

主要是运用了指针和递归的思想,运行速度极快,节约内存

public class 快速排序2 {

    public static void main(String[] args) {

        int[] arr = {1, 3, 6, 8, 9, 4, 2};

        kuaipai(arr, 0, arr.length - 1);

        for (int i=0;i

            System.out.print(arr[i]+" ");

        }

    }

    public static void kuaipai(int[] arr, int left, int right) {//创建一个快拍的方法

        if (left > right) {

            return;//这种情况不能够存在

        }

        int base =arr [left];//定义最左边的为基准数

        int i = left;//定义两个指针,i是左指针j是右指针

        int j =right;

        while (i != j) {//表示俩个指针还没有相遇

            while (arr[j] >= base && i

                j--;//从右边开始检索,如果比基准数大的话继续检索

            }

            //跳出上面的循环说明检索到了比基准数小的数此时右指针停下

            while (arr[i] <= base && i

                i++;//这里和上面同理,就是左指针检索比基准数大的数之后会停下

            }

            //这里表示左指针检索到了比基准数大的数

            //这里把左右指针对应的元素进行换位,需要在引入一个变量充当中间量

            int temp = arr[i];

            arr[i] = arr[j];

            arr[j] = temp;//这样左右指针的元素就完成了交换,之后继续检索,直到跳出最大的循环

        }

        //表示此时两个指针相遇了,i=j

        //此时把基准数和指针对应的元素进行交换

      arr[left] = arr[i];

        arr[i] = base;//这里不用在引入变量。因为基准数和left是一样d

        //此时第一轮检索结束,还要对基准数两边进行检索,因为方法是可以调用的,所以我们在方法里面再次调用这个方法,自己调用自己又称 递归

        kuaipai(arr, left, i - 1);//对基准数左边的进行排序

        kuaipai(arr, j + 1, right);

    }

2,冒泡排序

每次冒泡过程都是从数列的第一个元素开始,然后依次和剩余的元素进行比较, 跟列队一样, 从左到右两两相邻的元素比大小, 高的就和低的换一下位置. 最后最高(值最大)的肯定就排到后面了.

public class 冒泡排序 {

    public static void main(String[] args) {

              int []arr={9,4,7,3,8,1};

              maopao(arr);

              for (int i=0;i

                  System.out.print(arr[i]+" ");//遍历OK了

              }

    }

public  static void maopao(int []arr){//写一个冒泡函数

        for (int i=0;i

            for (int j=0;j

            if (arr[j]>arr[j+1]){

                int temp=arr[j];

                arr[j]=arr[j+1];

                arr[j+1]=temp;//交换位置

            }

            }

        }

    }

}

3.java中使用Arrays.sort()排序对一个数组进行排序

  Arrays.sort(a);//全部元素排序

Arrays.sort(a, 0, 3);//部分排序,而且最后一个不进行排序,这里也就是下表为3的第四个数不进行排序。速度快但是不稳定

4.选择法排序

选择排序就是从第一趟开始,用第一个元素和剩下中的每一个元素比较,如果比第一

个小,就和第一个元素交换值,最后使得第一个元素中的值最小,第二趟选择出第二

小的放到第二元素,依次,使得数组有序。下面我们举例说明:

public class 选择排序 {

    public static void main(String[] args) {

        int arr[] = {1, 4, 6, 3, 8, 7};

        xuanze(arr);

        for (int i = 0; i < arr.length; i++) {

            System.out.print(arr[i] + " ");

        }

    }

    public static void xuanze(int arr[]) {

        for (int i = 0; i < arr.length; i++) {//第一层循环是控制循环的趟数

            for (int j = i + 1; j < arr.length; j++) {

                if (arr[i] > arr[j]) {

                    int temp = arr[i];

                    arr[i] = arr[j];

                    arr[j] = temp;

                }

            }

        }

    }

}

你可能感兴趣的:(2022-02-28)