Android 排序算法

时间复杂度

O = Big O

去除掉常数项、去除掉低价项、剩下最高阶项表示事件复杂度

选择排序算法 O(n*n)

排序算法

https://www.runoob.com/w3cnote/ten-sorting-algorithm.html

选择和冒泡排序

选择排序: 找到最小值和第一个交换; 没有稳定性

Sort.java

冒泡排序: 能保持稳定性

异或 = 无进位相加

EOR.java

1、特性

  • A^0 = A
  • A^A = 0

2、得出结论

  • 交换律 顺序无关
  • 结合律

同样内存位置 异或 会洗成0;

找出 数组中奇数次 的数

定义一个 eor 和数组所有的数 异或;

找出 数组中两种树是奇数次的数

定义一个 eor 和数组所有的数 异或;

找到 eor 中某一位上是 1 的表示 a 和 b 这两种数某一位上有一个是0 另一个是1;

定义 eor1 以后某一位上0 的数,最后得到 a 或者 b, 然后和 eor 异或得到另一个;

插入排序

Sort.java

0-1 向前看排序

0-2 向前看

0-n

有稳定性;

二分排序

找局部最小值

递归 归并排序

归并: 分割 partition 然后 merge 可以做到稳定性

master 公式求解时间复杂度

a、b、d 三个参数确定 就可以确定时间复杂度;

快速排序

做不到稳定性,

partition 的

堆排序

使用二叉树来进行排序

排序算法的稳定性,

同样值的个体之间,如果不因为排序而改变相对次序,就表示这个排序是稳定的,否则就不是

不具备稳定性的排序:

选择排序,快速排序,堆排序

稳定性排序:

冒泡排序,插入排序,归并排序,一切桶排序;

相关推荐
南境十里·墨染春水5 小时前
C++传记(面向对象)虚析构函数 纯虚函数 抽象类 final、override关键字
开发语言·c++·笔记·算法
2301_797172755 小时前
基于C++的游戏引擎开发
开发语言·c++·算法
有为少年6 小时前
告别“唯语料论”:用合成抽象数据为大模型开智
人工智能·深度学习·神经网络·算法·机器学习·大模型·预训练
比昨天多敲两行6 小时前
C++ 二叉搜索树
开发语言·c++·算法
Season4506 小时前
C++11之正则表达式使用指南--[正则表达式介绍]|[regex的常用函数等介绍]
c++·算法·正则表达式
Tisfy7 小时前
LeetCode 2839.判断通过操作能否让字符串相等 I:if-else(两两判断)
算法·leetcode·字符串·题解
问好眼7 小时前
《算法竞赛进阶指南》0x04 二分-1.最佳牛围栏
数据结构·c++·算法·二分·信息学奥赛
会编程的土豆7 小时前
【数据结构与算法】优先队列
数据结构·算法
minji...9 小时前
Linux 进程信号(二)信号的保存,sigset_t,sigprocmask,sigpending
linux·运维·服务器·网络·数据结构·c++·算法
罗湖老棍子9 小时前
最大数(信息学奥赛一本通- P1549)(洛谷-P1198)
数据结构·算法·线段树·单点修改 区间求最大值