• 排序算法之基本排序算法(冒泡、插入、选择)


    关系和简介

    ********

    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;
        }
  • 相关阅读:
    什么是MIME类型
    让IIS支持wml,支持Jad,jar,3gp,mp4的下载
    REEBSD常用命令大全
    nginx的http session管理
    FreeBSD 8.0下给网卡绑定双IP
    firefox、IE下的几个不同属性的方法调用
    如何配置nginx的流量限制
    Nginx 简单的负载均衡配置示例
    DOM信息nodeType的应用
    SSI 的指令及参数
  • 原文地址:https://www.cnblogs.com/wulisz/p/12837881.html
Copyright © 2020-2023  润新知