• 冒泡排序、选择排序、插入排序


    最近在看数据结构与算法分析,想写个笔记记录一下,先从基本的冒泡、选择、插入开始吧。

    注:都是以增序为例说明

    一、冒泡排序

           1、原理:从数组的第一个位置开始两两比较array[index]和array[index+1],如果array[index]大于array[index+1]则交换array[index]和array[index+1]的位置,止到数组结束;

                             从数组的第一个位置开始,重复上面的动作,止到数组长度减一个位置结束;

                             从数组的第一个位置开始,重复上面的动作,止到数组长度减二个位置结束;

                             。。。。

         2、 时间复杂度:O(N²),进行了(n-1)*(n-2)....=n*(n-1)/2次比较和比较次数一半的交换次数(均况下),那么根据大O表示法时间复杂度为O(N^2)

         3.程序实现示例

    public void BubbleSort(int[] array)

    {

      int length = array.Length;

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

      {

      for (int j = length - 1; j > i; j--)

      {

      if (array[j] < array[j - 1] )

      {

      int temp = array[j];

      array[j] = array[j - 1];

      array[j - 1] = temp;

         }

         }

         }

    }

    二、选择排序

           1、原理:选择一个值array[0]作为标杆,然后循环找到除这个值外最小的值(查找小于标杆的最小值),交换这两个值,这时最小值就被放到了array[0]上,然后再将array[1]作为标杆,从剩下未排序的值中找到最小值,并交换这两个值。

          如图:(数据结构与算法中的图)

    2、时间复杂度:O(N^2),与冒泡排序相比减少了数组交换的次数

  • 相关阅读:
    工作问题随笔记录追加Filter过滤器踩坑记录
    vant使用dialog弹框遇到的小问题记录
    文件转换对应文件格式参数值
    总结pycharm运行代码只显示Process finished with exit code 0的解决办法
    DBA技术分享(二)MYSQL常用查询Columns和Views
    【学习总结】Git小结 (Mac版)
    【问题解决方案】MAC HBuilder X内置浏览器插件安装失败
    记一次 int 值溢出,引发的逻辑性错误
    Access 字段类型:【备注】 使用 getString() 读取字段内容是错误的!!!
    压缩算法原理
  • 原文地址:https://www.cnblogs.com/itboys/p/5531037.html
Copyright © 2020-2023  润新知