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

  • 相关阅读:
    牛客(14)链表中倒数第k个结点
    牛客(13)调整数组顺序使奇数位于偶数前面
    牛客(12)数值的整数次方
    牛客(11)二进制中1的个数
    牛客(10)矩形覆盖
    牛客(9)变态跳台阶
    牛客(8)跳台阶
    牛客(7)斐波那契数列
    Docker数据卷
    Docker镜像
  • 原文地址:https://www.cnblogs.com/itboys/p/5531037.html
Copyright © 2011-2022 走看看