zoukankan      html  css  js  c++  java
  • 冒泡排序、选择排序、插入排序

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

    注:都是以增序为例说明

    一、冒泡排序

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

  • 相关阅读:
    第一章 经济基础知识
    105_实例
    SQL开窗函数
    Docker教程:Docker入门实践
    102_HDFS分布式文件系统
    [转]远程连接出现身份验证错误,要求的函数不受支持
    flutter创建工程指定iOS及Android开发语言
    架构师学习之路:康威定律
    智能识别客户收货地址信息
    深入理解Apache Dubbo与实战 pdf
  • 原文地址:https://www.cnblogs.com/itboys/p/5531037.html
Copyright © 2011-2022 走看看