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


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

    注:都是以增序为例说明

    一、冒泡排序

           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),与冒泡排序相比减少了数组交换的次数

  • 相关阅读:
    Github
    Vocabulary in Computer
    js中三种定义变量的方式const, var, let的区别
    Node.js-1
    JSON_in_js
    JSON快速入门
    Mysql tinyint长度为1时在java中被转化成boolean型
    maven上解决循环依赖、又不想新加第三模块的方法
    关于springboot和tomcat的服务能力做下简单的测试
    tomcat各个端口的作用
  • 原文地址:https://www.cnblogs.com/itboys/p/5531037.html
Copyright © 2020-2023  润新知