• Java三大基础排序(冒泡排序、选择排序、插入排序)


    一、冒泡排序

    比较相邻的元素。如果第一个比第二个大,就交换他们两个。

                对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

                针对所有的元素重复以上的步骤,除了最后一个,即需要进行length-1次。

                第一次是对n个数进行n-1次比较,进行到最后第n个的一个是最大的;

                第二次是对n-1个数进行n-2次比较,进行到最后第n-1个的一个是最大的;

                ......

                持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    实现代码如下:

     1  public static void bubbleSort(int[] arr){
     2         for (int i = 0; i < arr.length; i++) {
     3             for (int j = 0; j < arr.length - i - 1; j++) {
     4                 if (arr[j] > arr[j + 1]){//如果比后一个大,就交换
     5                  int temp = arr[j];
     6                  arr[j] = arr[j + 1];
     7                  arr[j + 1] = temp;
     8                 }
     9             }
    10         }
    11     }

    三、选择排序

      选择排序原理即是,遍历元素找到一个最小(或最大)的元素,把它放在第一个位置,然后再在剩余元素中找到最小(或最大)的元素,把它放在第二个位置,依次下去,完成排序。

    实现代码如下:

     1    public static void selectSort(int[] arr){
     2 
     3         for (int i = 0; i < arr.length; i++) {
     4             int minIndex = i;//用来记录最小值的索引
     5             for (int j = i; j < arr.length; j++) {
     6                 if (arr[j] < arr[minIndex]) { // minIndex = arr[j] < arr[minIndex] ? j : minIndex;
     7                     minIndex = j;            //用三元运算符可减少代码量
     8                 }                           //
     9             }
    10                 int temp = arr[i];//将最小的值换到第i个位置
    11                 arr [i] = arr[minIndex];
    12                 arr [minIndex] = temp;
    13 
    14         }
    15     }

    二、插入排序

    插入排序与打扑克时整理手上的牌非常类似。摸来的第1张牌无须整理,此后每次从桌上的牌(无序区)中摸最上面的1张并插入左手的牌(有序区)中正确的位置上。为了找到这个正确的位置,须自左向右(或自右向左)将摸来的牌与左手中已有的牌逐一比较。

    实现代码如下:

     1 public static void insertSort(int[] arr){
     2         for (int i = 0; i < arr.length; i++) {
     3             for (int j = i; j > 0 ; j--) {//往前比较
     4                 if (arr[j] < arr[j-1]){
     5                     int temp = arr[j];
     6                     arr[j] = arr[j - 1];
     7                     arr[j - 1] = temp;
     8                 }
     9             }
    10         }
    11     }
  • 相关阅读:
    wmware虚拟机的克隆
    解决SecureCRT无法用非root账号登录ssh
    Docker容器操作
    Docker镜像操作
    Docker的安装和启动
    linux安装tomcat
    POJ 2456 Aggressive cows ( 二分搜索)
    POJ 1064 Cable master (二分查找)
    2008 APAC local onsites C Millionaire (动态规划,离散化思想)
    贿赂囚犯 Bribe the prisoners ( 动态规划+剪枝)
  • 原文地址:https://www.cnblogs.com/xpybsh/p/14934288.html
Copyright © 2020-2023  润新知