【经典算法实现 1】选择排序法 O(n^2)
发布日期:2021-06-29 14:52:31
浏览次数:2
分类:技术文章
本文共 707 字,大约阅读时间需要 2 分钟。
一、大O表示法
大O表示法是一种特殊的表示法,指出了算法的速度有多快,指出了最糟情况下的运行时间。
O(n) 的意思是在最糟糕的情况下,n 为需要运行的次数。log n^m 的意思是,要几个n 相乘才会得到m。
所以使用二分法,其速度为 O( log 2^m ),其中m 为元素个数总和。1.1 一些常见的大O 运行时间
- O(log n),也叫对数时间,这样的算法包括二分查找。
- O(n),也叫线性时间,这样的算法包括简单查找。
- O(n * log n) 这样的算法包括快速排序 ——一种速度较快的排序算法。
- O(n2),这样的算法包括选择排序 ——一种速度较慢的排序算法。
- O(n! ),这样的算法包括旅行商问题的解决方案 ——一种非常慢的算法。
二、选择排序法 O(n^2)
有一个数组,其中的内容是乱序的,请对其排序
a[ 10 ] = {10, 6 , 22, 23 ,40 ,0 ,1 ,8 , 7, 25};
使用选择排序的思路是,每次挑选最大 或 最小的数,依次放在一个新的数组中,这样时间复杂序为 O(n^2)。
因为,每个元素都要与其他元素比较一下。代码实现如下:
a[10]= { 10, 6 , 22, 23 ,40 ,0 ,1 ,8 , 7, 25};int * sort(int *a, int Size){ int *p = a; int temp=0, k=0; // 对当前数组中 n - 1 个元素进行遍历 for(int i =0; i
其时间复杂度为:
当元素个数为n 时,需要比较 (n-1)*(n-1) 次,简化为O(n x n) = O(n^2)转载地址:https://ciellee.blog.csdn.net/article/details/107243398 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月12日 00时31分59秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
npy文件和pkl文件的保存和读取
2019-04-29
买卖股票的最佳时机
2019-04-29
AUC粗浅理解笔记记录
2019-04-29
torch 模型运行时间与forward没对应的可能原因
2019-04-29
JavaScript 的addEventListener() 事件监听详解!
2019-04-29
上传图片到阿里云OSS和获取上传图片的url的详解 !
2019-04-29
Kafka为什么这么快?
2019-04-29
Java 生产者和消费者面试题
2019-04-29
生产者消费者问题
2019-04-29
本机电脑连接虚拟机redis失败解决方法
2019-04-29
DM365 应用层gpio控制
2019-04-29
linux i2c子系统abc
2019-04-29
CSS3 帧动画(Sprite,直译叫雪碧图)
2019-04-29
Java 父线程与子线程相互通信的方法
2019-04-29
Redis 六种淘汰策略和三种删除策略
2019-04-29
Java LinkedHashMap
2019-04-29
JPA 多线程同时对一条数据进行Update的问题
2021-07-02
JPA 多线程对数据进行更新,Update和Insert同时存在的问题
2021-07-02
Java 高性能队列Disruptor
2021-07-02
SpringBoot 使用https
2021-07-02