各种排序算法的稳定性分析

  • 稳定性排序算法
    • 冒泡排序
    • 插入排序
    • 归并问题
  • 不稳定排序算法
    • 选择排序
    • 快速排序
    • 堆排序

各种排序算法思路不清楚的请看 链接

稳定性:稳定性指在排序完成以后,相同元素之间的相对位置不变;意思就是一个数组[2,2,2,1];在完成排序以后,第一次出现的2在排好序的数组中仍旧在其他2的位置前边

稳定性排序算法

冒泡排序

  • 思路
    a) 在0~N-1的范围内,依次比较12位置,23位置,…,N-2 N-1位置,小数前移
    b) 在0~N-2的范围内,依次比较12位置,23位置,…,N-3 N-2位置,小数前移

每一次都把最大值移到数组末尾,如果遇到相同的元素,就不交换位置

插入排序

关键在于相等时候怎么处理

归并问题

关键在于merge的时候怎么操作

不稳定排序算法

选择排序

选择排序首先选择i~N-1范围内的最小值所在的索引j,然后交换索引i与j的元素;然后i依次加1;
比如Arr=[2,2,2,1,2,2,2];
第一步就需要索引位置0与索引位置3交换,这么交换以后原来在第一个位置的2就到了第四个位置,就与就与其他位置的2之间的相对顺序发生了变化

快速排序

因为在patition过程的时候,无法稳定;
比如数组Arr=[5,5,5,5,3,6]
a) 首先选定元素5为pvoit,一直到元素3才出现小于5的元素,所以与小于区的下一个元素做交换,这样原来第一次出现的5就与其他位置的5的相对位置发生了变化;

堆排序

各种排序算法的稳定性分析相关推荐

  1. 几种排序算法的稳定性分析

    稳定指的是什么?   稳定排序是指原来相等的两个元素前后相对位置在排序后依然不变. 常见的几种排序算法稳定性分析 本文讨论的排序算法有以下这几种: 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快 ...

  2. 堆排序稳定性举例_常见排序算法的稳定性分析

    一.不稳定排序算法有哪些 1.堆排序 2.希尔排序 3.快速排序 4.选择排序 口诀:一堆(堆)希尔(希尔)快(快速)选(选择) 二.常见排序算法稳定性分析 1.堆排序稳定性分析 我们知道堆的结构是节 ...

  3. 数据结构中各种排序算法的稳定性比较

    1.简单选择排序 2.堆排序        (1和2是属于选择排序) 3.直接插入排序 4.希尔排序     (3和4属于插入排序,有时把改进后的直接插入排序叫做二分插入) 5.冒泡排序        ...

  4. 八大排序算法的稳定性及时间复杂度

    前言: 首先清楚何谓稳定性? 通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同.在简单形式化一下,如果Ai = Aj,Ai原来在Aj位置前,排序后Ai还是要 ...

  5. 数据结构实验:内部排序算法的性能分析

    文章目录 前言 一.问题描述 二.问题分析 三.实验结果及分析 (1)实验数据描述 (2)实验结果 (3)性能分析 四.源代码 前言 记录下本学期的数据结构实验 本实验主要集中于比较几种内部排序算法 ...

  6. 排序算法的稳定性 (什么样的排序是不稳定的)

    有两个6,a[0]和a[3].排序结果就有两种可能: 如果排序结束后,a[0]可以保证一定在a[3]前头,也就是他们原有的顺序不变,那这种排序算法就是稳定的.(比如常见的冒泡排序.基数排序.插入排序. ...

  7. 山东大学软件学院大二下数据结构课程设计---排序算法的性能分析

    文章目录 一.题目 二.界面图 主界面 比较和移动次数饼图 比较不同表长的对话框 验证稳定性的对话框 课设录屏 三.题目分析 四.基本思路 五.项目结构 1.开发环境 2.结构介绍 3.关键点及难点 ...

  8. 常见的排序算法的稳定性

    分析一下常见的排序算法的稳定性,每个都给出简单的理由. 冒泡排序 冒泡排序就是把小的元素往前调或者把大的元素往后调.比较是相邻的两个元素比较,交换也发生在这两个元素之间.所以,如果两个元素相等,我想你 ...

  9. 排序算法的稳定性及其意义

    稳定性的定义 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这 ...

最新文章

  1. VC++读取图像RGB值
  2. 8253译码电路设计以及初始化编程讲解
  3. 前端学习(2323):angular文件介绍
  4. toj 4612 A Shooting Game
  5. subline text3设置中文亲测
  6. Ubuntu硬盘全盘备份tar和clonezilla两种方案
  7. VUE颜色选择器插件vColorPicker
  8. MySQL的安装和基本操作
  9. 长沙理工大学c语言编程题,长沙理工大学2014年上期期末c语言编程题库.doc
  10. 手写minist的DataLoader
  11. 【常用模块】OLED显示模块(原理讲解、STM32实例操作)
  12. HCIA-IoT 个人学习总结 Day3
  13. React组件Component
  14. 诚立业科技面试经历.
  15. 国家税务总局全国增值税发票查验平台网站js逆向分析及全逆向算法还原
  16. c语言程序设计第二版(张磊),C语言程序设计教程(第2版) 教学课件 张磊 第1章 程序设计概述.pdf...
  17. Java大数据-Hadoop-HDFS客户端操作文件更名和移动
  18. 物通博联——PLC工业智能物联网网关
  19. STM8硬件IIC从机
  20. 【new操作符做了什么 —— js】

热门文章

  1. 渲云影视产品集“云”之势,当下有为未来可期!
  2. 【C++二叉树的序列化和反序列化】
  3. 巴菲特与索罗斯的投资习惯
  4. 一个红包系统的设计与实现(1)-提出问题
  5. 学习笔记---Git
  6. 最近特别火的给Emoji表情加小辫子,双端通用方法来了
  7. PTA 7-102 藏头诗
  8. 读《微软的秘密》,想《走出软件作坊》
  9. 全卷积(fully convolution)
  10. vue 2个方法先后执行_让人内心强大的2个方法,分享给大家