搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
知新_RL
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
鸿蒙【ArkTS】使用TS装饰器封装网络请求HTTP_arkts 调用java外部接口
2
Docker部署Stable-Diffusion-webui_docker 部署stable-diffusion
3
【Linux杂货铺】进程控制
4
数据结构(十三)----几种特殊的树
5
初识C语言——第一章_c语言第1章
6
CRC基本原理及实现方法_crc码的设计原理与逻辑实现的关键字
7
【动态更新】弃用deprecated登记_optionengine' object has no attribute 'execute
8
Vue 前端开发_vue前端开发
9
mysql盲注_mysql盲注可用的函数
10
分层自动化测试模型变与不变_用户分层自动化(2),2024年最新华为软件测试面试真题解析
当前位置:
article
> 正文
几种常见算法的介绍及复杂度分析 _因式分解 复杂度 n
作者:知新_RL | 2024-05-16 17:33:14
赞
踩
因式分解 复杂度 n
一、几种常见算法的介绍及复杂度分析
1.基本概念
1.1稳定排序(stable sort)和非稳定排序
稳定排序是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,。反之,就是非稳定的排序。
比如:一组数排序前是a1,a2,a3,a4,a5,其中a2=a4,经过某种排序后为a1,a2,a4,a3,a5,
则我们说这种排序是稳定的,因为a2排序前在a4的前面,排序后它还是在a4的前面。假如变成a1,a4,a2,a3,a5就不是稳定的了。
1.2内排序( internal sorting )和外排序( external sorting)
在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序; 在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的存放顺序排序方法称为外排序。
1.3算法的时间复杂度和空间复杂度
所谓算法的时间复杂度,是指执行算法所需要的计算工作量。 一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
2.几种常见算法
2.1冒泡排序 (Bubble Sort)
冒泡排序方法是最简单的排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。
冒泡排序是稳定的。算法时间复杂度是O(n ^2)。
2.2选择排序 (Selection Sort)
选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置已经是正确的了。
选择排序是不稳定的。算法复杂度是O(n ^2 )。
2.3插入排序 (Insertion Sort)
插入排序的基本思想是,经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L[i]插入L[1..i-1]的适当位置,使得L[1..i]又是排好序的序列。要达到这个目的,我们可以用顺序比较的方法。首先比较L[i]和L[i-1],如果L[i-1]≤ L[i],则L[1..i]已排好序,第i遍处理就结束了;否则交换L[i]与L[i-1]的位置,继续比较L[i-1]和L[i-2],直到找到某一个位置j(1≤j≤i-1),使得L[j] ≤L[j+1]时为止。图1演示了对4个元素进行插入排序的过程,共需要(a),(b),(c)三次插入。
直接插入排序是稳定的。算法时间复杂度是O(n ^2)
2.4堆排序
堆排序是一种树形选择排序,在排序过程中,将A[n]看成是完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系来选择最小的元素。
堆排序是不稳定的。算法时间复杂度O(nlog n)。
2.5归并排序
设有两个有序(升序)序列存储在同一数组中相邻的位置上,不妨设为A[l..m],A[m+1..h],将它们归并为一个有序数列,并存储在A[l..h]。
其时间复杂度无论是在最好情况下还是在最坏情况下均是O(nlog2n)。
2.6快速排序
快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。
快速排序是不稳定的。最理想情况算法时间复杂度O(nlog2n),最坏O(n ^2)。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/知新_RL/article/detail/579803
推荐阅读
article
数据结构
——希尔
排序
...
对直接插人的改进。
数据结构
——希尔
排序
懒猫老师-
数据结构
-(62)希尔
排序
_哔哩哔哩_bili...
赞
踩
article
鸿蒙
OS短
视频
开发
--
边下边
播
实现
_
鸿蒙
video
直
播
...
下载工具Mp4DownloadUtilsimport com.mytoutou.
video
.manage.player....
赞
踩
article
虚拟机
下
Ubuntu
上网设置_
ubuntu
虚拟机
怎么
连接
网络
...
在NAT模式下,
虚拟机
的
网络
连接
通过宿主机转发,使用宿主机的公共IP地址进行通信,外部
网络
无法直接访问
虚拟机
。在桥接模式...
赞
踩
article
Keras
中的
循环
神经网络
(
RNN
)...
简介
循环
神经网络
(
RNN
) 是一类
神经网络
,它们在序列数据(如时间序列或自然语言)建模方面非常强大。简单来说,
RNN
...
赞
踩
article
Flutter
——最详细(
Scaffold
)
使用
教程
_
flutter
scaffold
...
相当于界面的主体,组件的展示都必须依附于它。
_
flutter
scaffold
flutter
scaffold
...
赞
踩
article
打印
出
1
-
1
0000 之间的所有
对称
数_请用
python
打印
出
1
0000 以内的
对称
数(...
let b = [...Array(
1
0000).keys()].filter(x=>{ return x.toStri...
赞
踩
article
Photoshop
CC
2017
在
Mac
上
安装
报错
解决办法
_
photoshop
cc
2017
安...
当您在
Mac
安装
Photoshop
CC
2017
出现这样的bug,不要着急,请按照我的办法走,一定可以解决的,如果没...
赞
踩
article
uni
-
app
- 最新实现将
uni
app
项目
打包
编译
为 H5
网站
,并上传
部署
到
web
服务...
uni
app
,
打包
h5
,
打包
编译
H5
网站
,怎么
打包
h5
,
uni
app
打包
成H5
部署
到
服务器
教程,
uni
app
打包
H5页面...
赞
踩
article
TypeScript
4.3
beta
版本正式发布:新增
import
语句补全,对模板
字符串
类型进行...
作者 |
TypeScript
团队译者 | 王强策划 | 田晓旭来源|前端之巅今天,我们很高兴为大家带来了 TypeS...
赞
踩
article
心理学分析,如何
找
回
自信
_刚学
了
数据分析
,又
找
不到
自信
心
了
...
(1) 改变委曲求全的思维方式 在你身上也许发生过这样一些事情:正在忙于自己的事情,朋友
找
上门来邀请你参加舞会,碍于面子...
赞
踩
article
sparksql
自定义
数据源
...
sparksql
自定义
数据源
Spark SQL开放了一系列接入外部
数据源
的接口,来让开发者可以实现,接口在 org.ap...
赞
踩
article
CSDN
的
积分
如何
获取
(转)
_
csdn
积分
怎么
获取
...
方法之一就是通过对下载
的
资源评分获得
积分
:首先是找一些0分
的
资源去下载,这些资源由于不需要资源分就可以获得,所以你没有积...
赞
踩
article
【
Kubernetes
】
Docker
+
K8s
实践
之路(
K8s
实战篇
)...
资源对象的操作Pod1、创建 Pod两个容器的写法;一个 Volume 同时挂载到 两个 容器的 写法;查看某 Pod ...
赞
踩
article
重磅!
上海
出
落户
新政
:
双
一流
应届
硕士
可直接
落户
!...
点击上方“3D视觉工坊”,选择“星标”干货第一时间送达 编辑丨科研大匠9月23日,据
上海
学生就业创业服务网,
上海
市高校招...
赞
踩
article
Blender
分离
贴图
...
blender
分离
贴图
...
赞
踩
article
基于
python
+
Django
框架学校
校园
网上商城
购物
系统...
基于
python
+
Django
框架学校
校园
网上商城
购物
系统,黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城...
赞
踩
article
Github2024
-05-15 开源
项目
日报
Top10
...
根据Github Trendings的统计,今日(2024-05-15统计)共有10个
项目
上榜。
Github2024
-0...
赞
踩
article
数据结构
——
c++
实现(
知识点
集合
)_
c++
数据结构
...
数据结构
——
c++
实现(
知识点
集合
)某不知名学狗的复习记录,包含
数据结构
基本概念,线性表,栈、队列、递归,串、数组、广...
赞
踩
article
哈希
表(概念
,
冲突
的解决
,
实现
哈希
桶
)_
hash
桶
...
哈希
表的这些概念
,
如何减少
冲突
,
冲突
的解决方案
,
如何
实现
哈希
桶
,
这些你都知道吗?_
hash
桶
hash
桶
...
赞
踩
article
在安装一个
model
的时候,下面提示[
notice
] A
new
release
of
pip
is...
表示尝试与PyPI服务器通信时发生了网络问题,然后使用国内的镜像源,比如豆瓣的PyPI镜像,输入
pip
install ...
赞
踩
相关标签
数据结构
排序算法
算法
java
ubuntu
linux
运维
python
深度学习
tensorflow
人工智能
flutter
Photoshop
Mac系统
PhotoShop安装出错
The installation cannot contin
uniapp
HBuilderX打包h5网站
打包h5网站详细发布配置教程
发布H5网页时各项配置怎么填
unia开发的h5网页怎么部署
发布编译h5出现白屏报错咋办
h5上传部署到服务器详细的教程
编程语言