算法 选择排序 冒泡排序 插入排序

  • 选择排序
    • 背景: 一个长度为5的乱序数组
    • 实现思路:循环遍历,从5个数中获取最大的值跟第一位交换,再从四个数中获取最大值跟第二位置交换,依次类推从大到小排序。
    • 实现方法:
      • 先从 0 - 4 中选择一个最小值,把最小值和第一位 做位置交换
      • 再从 1 - 4 中选择一个最小值,把最小值和第二位 做位置交换
      • … …
      • 以此类推,直到结束
public static void selectSort(int[] arr){

        if(arr == null || arr.length<2){
            return;
        }

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

            int minValueLocation = i;

            for (int j = i+1; j < arr.length; j++) {
                minValueLocation = arr[minValueLocation]>arr[j]?j:minValueLocation;
            }

            swep(arr,i,minValueLocation);
        }


    }
  • 冒泡排序
    • 背景: 一个长度为5的乱序数组
    • 实现思路:(遍历第一遍,找到最大值,放在最高位置上)
      • 第一次外循环 ( 0 – 5)
        • 拿第一个数和第二个数做比较,如果第一个数大,则交换位置,反之则不处理
        • 再拿第二个数和第三个数做比较,以此类推
        • 第一次内循环结束后,位置为5的为数组中的最大值
      • 再开始第二次外循环(0 – 4)
      • … …
      • 以此类推,直到结束
public static void bubbleSort(int[] arr){

        if(arr == null || arr.length<2){
            return;
        }

        int length = arr.length;

        for (int i = length; i > 0; i--) {

            for (int j = 0; j < length-1; j++) {

                if(arr[j]>arr[j+1]){
                    swep(arr,j,j+1);
                }
            }

        }
    }
  • 插入排序
    • 背景: 一个长度为5的乱序数组
    • 实现思路:(拿后面的数跟前面的数比较,最后结果最大的数在最高位上)
      • 从第二个位置开始比较
        • 拿第二个数和第一个数做比较
          • 如果第二个数比第一个数小,则交换位置
          • 反之则不变
      • 再从第三个位置开始比较
        • 先拿第三个数和第二个数比较
          • 如果第三个数比第二个数小,则交换位置
            • 交换位置后,继续拿这个数和第一个位置的数比较
              • 如果小,交换位置
              • 如果大,停止
          • 如果第三个数比第二个数大,则保持不变
public static void insertSort(int[] arr){

        if(arr == null || arr.length<2){
            return;
        }

        int length = arr.length;

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

            for (int j = i-1; j >= 0; j--) {

                if(arr[j+1]<arr[j]){
                    swep(arr,j,j+1);
                }
            }
        }

    }
  • 测试方法
public static void main(String[] args) {

        int[] arr = {1,3,2,4,5,3,1,54,2,3,4,5,1,0};

        System.out.println(Arrays.toString(arr));

        //selectSort(arr);

        //bubbleSort(arr);

        insertSort(arr);

        System.err.println(Arrays.toString(arr));

    }

public static void swep(int[] arr,int bigLovation,int minLovation){

        int minValue = arr[bigLovation];

        arr[bigLovation] = arr[minLovation];

        arr[minLovation] = minValue;


    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值