• 常用算法


    代码实现:https://gitee.com/sgrslim/DataStructure.git

    冒泡排序:

    相邻数据元素比较,进行交换。     O(n^2)

    选择排序:

    原理:

    1. 每一次遍历的过程,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引值大于其他某处索引处值,则假定其他某个索引处的值为最小值,最后找出最小值所在的索引
    2. 交换第一个索引处和最小值索引处位置

          O(n^2)

    插入排序

    原理:

    1. 将所有元素分为两组,已排序 和 未排序。
    2. 找到未排序组中的第一个元素,向已排序组中进行插入。
    3. 倒叙遍历已排序元素,依次和待插入元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他元素向后移动一位。

    希尔排序

    原理

    1. 选定一个增长量h(一般为取数组长度的二分之一),按照增长量h作为数据分组的依据,对数据进行分组
    2. 对分好组的每一组数据完成插入排序
    3. 减小增长量,最小减为1,重复第二步操作

    推演:希尔排序 是 插入排序的 优化。旨在减少 比较次数和交互次数。以增量h将数组分成多个小组,每个小组进行排序。最终h=1时,其实就是插入排序,但是因为进行过多次小组排序后,有一定的排序基础,所以效率很高。

  • 相关阅读:
    ReentrantReadWriteLock读写锁的使用
    Exchanger的使用
    CyclicBarrier的用法
    Semaphore的使用
    CountDownLatch的使用
    BlockingQueue的使用
    对字符串操作的各种笔试题
    struts2请求过程源码分析
    shell语法使用
    hibernate调用mysql存储过程
  • 原文地址:https://www.cnblogs.com/sgrslimJ/p/13046924.html
Copyright © 2020-2023  润新知