美文网首页
7.1简单排序

7.1简单排序

作者: 你weixiao的时候很美 | 来源:发表于2018-11-21 22:22 被阅读2次

前提:

  • void X_Sort (ElementType A[], int N)
  • 为简单起见,讨论整数大小的排序。
  • N是正整数。
  • 只讨论基于比较的排序。
  • 只讨论内部排序。
  1. 冒泡排序:
    从上到下比较相邻2个泡泡。
void Bubble_Sort (ElementType A[] , int N) {
   for (P = N-1; P>= 0 ; P--) {      
        flag  = 0;
        for (I = 0 ;I< P, I++){   // 一趟冒泡
           if (A[I] > A[I+1]) {
           Swap (A[1], A[I+1]);
           flag = 1;
           }
        }
       if (flag == 0) break;
  }
}

时间复杂度: 最大是 T= O(N平方); 最小 是T = O(N)

  1. 插入排序
    打牌的时候,牌的插入过程。新牌从后往前和前边的比较,然后插入。
 void Insert_sort (ElementType A[], int N) {
         for ( P = 1; p < N; p++) {
                 Tmp = A[p];  // 摸一张牌
                 for (I = P; I>0 && A[I-1]>Tmp;i--) {
                A[I] = A[I-1];   // 移出空位置。
                }
                A[I] = Tmp;   //将新牌落位。
       }
}

时间复杂度 也是最大是 O(N 平方),最小是O(N)

逆序对:对于下标i<j,如果A[i]>A[j],则称(i,j)是 一对逆序对(inversion)。

对于插入排序和冒泡排序,T(N, I) = O( N+I ) I是逆序对的个数。

  • 任意N个不同元素组成的序列平均具有 N ( N - 1 ) / 4 个逆序对。
  • 任何仅以交换相邻两元素来排序的算 法,其平均时间复杂度为 Ω ( N2 )。

相关文章

  • 7.1简单排序

    前提: void X_Sort (ElementType A[], int N) 为简单起见,讨论整数大小的排序。...

  • 常用排序算法(Python实现), 持续更新中

    一、非线性时间比较类排序 交换排序冒泡排序快速排序 插入排序简单插入排序希尔排序 选择排序简单选择排序堆排序 归并...

  • 策略算法工程师之路(第七章)-策略框架总结

    目录 7 策略框架总结 7.1 召回+排序架构 7.1.1 物体检测算法 7.1.2 FAQ智能问答 7.2 召回...

  • 基础算法|简单选择排序

    简单选择排序是一种排序算法,指在简单选择排序过程中,所需移动记录的次数比较少。简单选择排序是不稳定排序。 简单选择...

  • 选择排序-c语言描述

    选择排序分简单选择排序与堆排序两种,先介绍简单选择排序。1.简单选择排序在未排序的序列中找到最小(大)元素,存放到...

  • 算法学习之简单排序

    简单排序 简单排序有三种, 冒泡排序,选择排序,插入排序 冒泡排序 冒泡排序是一种易于实现的排序算法, 以升序为例...

  • 排序算法概述

    在本系列中我们综述十个常用排序算法,分别是简单插入排序、希尔排序、简单选择排序、快速排序、冒泡排序、堆排序、归并排...

  • 排序

    简单排序: 插入排序 冒泡排序 快速排序 归并排序 基数排序

  • [iOS基础]OC常用算法实现

    希尔排序 快速排序 直接插入排序 简单选择排序 冒泡排序

  • 常用算法OC实现

    希尔排序 快速排序 直接插入排序 简单选择排序 冒泡排序

网友评论

      本文标题:7.1简单排序

      本文链接:https://www.haomeiwen.com/subject/isuhqqtx.html