zoukankan      html  css  js  c++  java
  • 排序算法之基本排序算法(冒泡、插入、选择)

    关系和简介

    ********

    1.本文所介绍算法均以“升序”为例。 

    2.稳定算法:数组中有{……,a,……,b,……},且a=b,排序后a,b的相对顺序不会发生改变的算法

    3.不稳定算法:数组中有{……,a,……,b,……},且a=b,排序后a,b的相对顺序可能会发生改变的算法

    ********

    插入排序

    规则

    通俗来讲,像玩扑克牌一样,第一张直接拿在手里,第二张比第一张大的话,放在右侧,小的话,放在左侧。第三张和第二张先比较,大的继续放在右侧,小的再去和第一张比较,大的话,此张成为第二张,原第二张想后移动,变成第三张,第一张不变,小的话,此张变为第一张,原来的两张依次后移。第4.5.6……n张如是。

    代码

        public Integer[] insertAscSort(Integer[] arr){
            for (int i=1; i<arr.length; i++) {
                int value = arr[i];//待插入数据
                int j = 0;//待插入位置
                for (j = i-1; j >= 0; j--) {//已排序数组
                    if (arr[j] > value) {
                        arr[j+1] = arr[j];//移动数据
                    } else {
                        break;
                    }
                }
                arr[j+1] = value; //插入数据
            }
            return arr;
        }

    冒泡排序

    规则

    在每一轮排序中,从第一个元素开始,比较相邻的两张牌的大小,若前面的元素>后面的元素,则交换元素,否则不动。

    代码

        private Integer[] bubbleAscSort(Integer[] arr){
            int temp = 0;
            for(int i=0;i<arr.length-1;i++){//循环次数
                for(int j=0;j<arr.length-1-i;j++){//指针
                    if(arr[j] > arr[j+1]){
                        temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }
            return arr;
        }

    选择排序

    规则

    在第一轮的排序中,遍历整个数组,记录最小的元素的下标,将其和下标为0元素交换。

    在第N(N>1)轮的排序中,遍历从下标从n(n>0)开始的数组,记录最小的元素,将其和下标为n的元素进行交换。

    代码

        private Integer[] selectAscSort(Integer[] arr) {
            for (int i=0; i<arr.length-1; i++) {
                Integer minIndex=i; //最小元素下标
                for (int j=i; j<arr.length; j++) {
                    if (arr[j] < arr[minIndex]) {
                        minIndex=j;
                    }
                }
                if (minIndex!=i) {
                    Integer temp = arr[i];
                    arr[i] = arr[minIndex];
                    arr[minIndex = temp;]
                }
            }
            return arr;
        }
  • 相关阅读:
    Maven+SpringMVC+Dubbo 简单的入门demo配置
    记录Gerrit2.8.4环境迁移、安装、配置以及问题解决
    初试Jenkins2.0 Pipeline持续集成
    Docker镜像仓库Harbor之搭建及配置
    Docker镜像仓库Harbor之Swagger REST API整合配置
    GitLab 之 PlantUML 的配置及使用
    Git Review + Gerrit 安装及使用完成 Code-Review
    Maven 插件之 docker-maven-plugin 的使用
    SonarQube 的安装、配置及 Maven 项目的使用
    Java Maven项目之Nexus私服搭建和版本管理应用
  • 原文地址:https://www.cnblogs.com/wulisz/p/12837881.html
Copyright © 2011-2022 走看看