排序和去重--说说两个简单常用的算法
for(i = 0; i < n; i++)
{
for(int j = i +1; j< n ;j++)
{
if(array[i] > array[j])
{int a = array[i];
array[i] = array[j];
array[j] = a;
}
}
}
理解冒泡算法很简单:第一次以第一个数据为开始比较拿到数据中的最值放到原来的位置,然后往下移动一次,找寻另外的n-1个数据中的最值,放入第二个位置,一次这样运行结束。
冒泡排序的时间复杂度计算:由于在循环的最中心的区域有数据比较和交换的执行,所以这三行代码要计算时间复杂度,因此最短时间为n*(n-1)/2 ;最长时间是 n*3(n-1)/2;平均起来时间复杂度就是 O(n^2)。其实这个计算不合理,以为在循环的核心中有比较计算,比较计算也是需要耗费时间的,那么应该是n*(n-1)/2 和n*4(n-1)/2的均值。
去重算法 -- 比较去重
对于一个数据结构判断重复的数组不能直接在原有的数据结构中剔除,这样会导致数据结构索引溢出。
最常用最简单的算法就是一次比较去重:
for(i = 0; i < n; i++)
{
for(int j = i + 1; j < n; j++ )
{
if(array[i] == array[j])
{
continue;
}
else
{
if(j == n-1)
{
//都比较完了
list.add(array[i]);
}
}
}
}
时间复杂度平均值:[n*(n-1)/2 + n*2(n-1)/2]/2 ~= O(1.5n^2)
空间复杂度平局值:O(n)
排序和去重--说说两个简单常用的算法相关推荐
- 快速排序算法_经常用到的的排序(快速排序和归并排序)简单的计算机算法学习...
1.快速排序 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1960年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的 ...
- 简单常用滤波算法C语言实现
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xiao2yizhizai/article/details/51026151 1.限幅滤波算法(程序判 ...
- JAVA 两个简单的抽奖算法
不多说了,代码不多,算法也简单 方法一: /*** 获取中奖号的算法,方法会在每次抽到一个中奖号后,将最后一个号码填充到此位置,实现不重复抽取.* <p>* 经过多次测试,此方法在大数据时 ...
- 简单常用滤波算法c语言实现,简单常用滤波算法C语言实现
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xiao2yizhizai/article/details/51026151 1.限幅滤波算法(程序判 ...
- php大文件怎么排序去重,简单实现大文件的排序和去重
有一道校招生的面试题,是要给一个很大的文件(不能全部放内存,比如1T)按行来排序和去重. 一种简单解决方案就是分而治之,先打大文件分词大小均匀的若干个小文件,然后对小文件排好序,最后再Merge所有的 ...
- 对 Python 字典排序的两种简单方法
引言 Dictionary 是一种重要的数据结构,它通过将 key 与 value 进行映射来存储数据.Python 中的默认字典是无序数据结构.与列表一样,我们可以使用 sorted()函数按键对字 ...
- 两个简单的Demo示例向读者展示Flash和ASP.NET交互原理以及过程
ASP.NET与FLASH交互学习了ASP.NET的基础知识之后,终于等到学习交互的时候了.请大家和我一起来进行让人激动的交互吧!本章我将用两个简单的Demo示例向读者展示Flash和ASP.NET交 ...
- WPF绘制简单常用的Path
原文:WPF绘制简单常用的Path 写代码出身的我们经常需要使用一些简单 但是不是规则图形的Path 但限于美工功底有限 不知道怎么去画 下面我告诉大家一些简单的小技巧 用代码来画Path 个人还是比 ...
- python快速排序算法_Python实现快速排序算法及去重的快速排序的简单示例
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用. 该方法的基本思想是: 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或 ...
最新文章
- 自动调试用于移动GPU的卷积网络
- WF4.0实战(七):请假流程(带驳回操作)
- visual studio 不能创建biztalk 项目
- 不要错过这轮疫情的“洗牌”机会
- 三菱d700变频器接线图_图解PLC与变频器通讯接线
- linux 上管理mysql_Linux下管理MySql
- 机器学习-西瓜书、南瓜书第三章
- [Android] [Java] Process 创建+控制+分析 经验浅谈
- 一张图看透办公网安全
- linux系统u盘安装7.2,U盘安装CentOS 7系统的方法
- CF55D-Beautiful numbers【数位dp】
- WinSnap 截图工具绿色中文特别版
- css 心形动画 爱心动画
- 2021年如何通过网络赚钱
- 植物大战僵尸:学会使用人造指针
- 【C/C++】学前必看知识概览
- Adobe国际认证证书介绍
- 【ARM微型电脑/IoT设备/嵌入式】Linux Ubuntu 树莓派 Jetson nano设置PTP时间同步
- inux下安装xrdp
- 手机安卓系统简介及测试经验总结
热门文章
- linux安装x11鼠标主题
- ubunut16.04解决网速慢的办法
- OpenGL:纹理Textures
- 《机器学习》 周志华学习笔记第六章 支持向量机(课后习题)python 实现
- php日期时间代码,PHP日期计算
- 判断元素是否在ndarray_专业文章 | 如何判断是否构成有“一定影响”的包装装潢...
- udp本地通信需要注意哪些方面_验房注意什么?验房都需要检查哪些方面?
- 在java.library.path中找不到允许在生产环境中实现最佳性能的基于APR的Apache Tom.....
- php通过正则表达式下载图片到本地的实现代码,PHP通过正则表达式下载图片到本地的实现代码...
- 蓝牙耳机测试软件apk_黑鲨蓝牙游戏耳机2解决延迟问题:比AirPods Pro更强