简单算法

Java数据结构与算法_简单算法

       这里复习三种最基本的排序算法,冒泡,选择和插入,他们的时间复杂度都为O(n^2)。

冒泡排序

         冒泡排序是排序算法中最慢,但是最简单的一种。冒泡只所以叫做冒泡是因为在算法的外部循环中,每一次都会把队列的最大(最小)值,找出来。

 

 

public void bubbleSort(int[] array) {
		int in, out;
		for (out = array.length - 1; out > 1; out--) {
			for (in = 0; in < out; in++) {
				if (array[in] > array[in + 1])
					swap(in, out);
			}
		}
}

 

 

选择排序

        选择排序算法其实是冒泡排序算法的改进,将必要的交换次数从O(N2)减少到了O(N).但是比较次数任然是O(N2)。

 

 

	public void selectedSort(int[] array) {
		int in, out;
		int max;
		for (out = array.length; out > 1; out--) {
			max = out;
			for (in = 0; in < out; in++) {
				if (array[in] > array[max])
					max = in;
			}
			swap(in, max);
		}
	}

 

插入排序

        插入排序是三种简单排序算法中最简单的一种。

	public void insertSort(int[] array){
		int in,out,temp;
		for(out=1;out<array.length;out++){
			temp = array[out];
			in=out;
			while(in>0&&array[in]>temp){
				array[in]=array[in-1];
				in--;
			}
		array[in]=temp;
		}
	}

 

几种简单排序之间的比较

         除非手边没有书可参考的,一般情况几乎不太实用冒泡算法。它过于简单了,以至于可以毫不费力的写出来,然而当数据量很晓得时候,它会有些应用的价值

选择排序虽然把交换次数降到了最低,但比较的次数任然很大。当数据量很小,并且交换数据相对于比较数据更加耗时的情况下,可以应用选择排序。

         大多数情况下,假设当数据量比较小或者基本上有序时,插入排序算法是三种简单排序算法中最好的选择。对于更大的数据量的排序来说,快速排序时最快的算法。

算法逆向第1篇——简单算法逆向 本文作者:icq5f7a075d Music起~ “啊门 啊前 一棵葡萄树,啊嫩 啊嫩 绿地刚发芽,蜗牛背着那重重地壳呀,一步一步地往上爬~” 上周分析勒索病毒(GlobeImposter),笔者感觉自己算法的逆向能力很弱,于是找了些题目练手。本文逆向程序主要来源于《加密与解密实战攻略》,算法将用Python/C++实现。 既然有了算法逆向1,自然会有2、3、4……叶问说“我要打十 阅读详情

相关推荐

串—BF算法(简单匹配算法)

串的模式匹配: 查找模式串 t 是不是目标串 s 的子串,如果模式匹配成功(在目标串s中找到一个模式串t),t 是s 的字串,返回 t 在 s 中的位置;如果模式匹配不成功,t 不是 s 的子串, 返回 -1. 方法: BF算法,也称为简单匹配算法。 采用穷举的思路。从s的每一个字符开始依次与t的字符进行匹配。 基本思路: 1、从目标串s = "s0 s1…s n-1"的第一个字符开始和模式串t ...

编程爱好者的博客 2573

班上有学生若干名,已知每名学生的成绩(整数),求班上所有学生的平均成绩,保留到小数点后两位。同时输出该平均成绩整数部分四舍五入后的数值。 第一行有一个整数n(1<= n <= 100),表示学生的人数...

#include<iostream> #include<iomanip> using namespace std ; int main() { int n; while(cin>>n) { int score, score_sum = 0; for(int i=0;i<...

aizhi0169的博客 8398

进程调度——简单轮转算法

#include #include #include typedef struct process{//进程控制块     int symbol;//进程标识符     struct process *next;//指向下一个进程的指针,也是只赋了值     int neednum;//进程所需要运行的时间     int cpunum;//占用cpu的时间,初始值为0     i

musenhou的博客 1361

简单对称算法

简单对称算法 class Symmetry { /** * 简单对称加密算法之加密 * @param String $string 需要加密的字串 * @param String $skey 加密EKY * @return String */ public static function encode($string = '',...

weixin_30352645的博客 112

c语言的一道简单的题

这是一个我在高中时自己编写的一个简单的程序,就是用c编写的

C语言一道简单算法题

已知某个班有n(1<=n<=100)个学生,输入每行为学生姓名(最多20个字符)和其c语言成绩(0~100),请按照成绩从高到低排序后输出。若有相同的,不能改变其顺序。

简单diff算法

在vue中用于比较新旧vnode的子节点都是一组节点时,为了以最小的性能开销完成更新,需要比较两个子节点,用与比较的算法就叫作diff算法。

黎小小的博客 531

N个学生比较成绩

简单的程序,N个学生比较成绩,其实我就是来咱积分的

简单的 AI 算法解释

简单的 AI 算法解释

axecute的博客 1574

一道算法题

主要是对二进制文件的操作

lanstar 7.0旗舰班 100用户

lanstar 7.0旗舰班 100用户

简单选择算法NS

简单选择算法NS

weixin_38235131的博客 1721

PMBus协议解析:基于I2C的电源管理实战与TMS320F28003x驱动开发

在嵌入式系统与服务器电源设计中,数字电源管理总线是实现高效、可靠电源监控与控制的关键技术。PMBus协议基于广泛应用的I2C总线物理层,通过定义标准化的命令集、数据格式与时序规范,为多路电源的电压电流监控、动态调整及故障处理提供了高效解决方案。其技术价值在于通过硬件自动处理协议解析、时钟拉伸与中断,显著降低软件复杂度,使开发者能聚焦于电源环路设计等核心逻辑。该协议广泛应用于服务器、通信基站及高性能计算板卡等场景,通过引入数据包错误检查、专用告警线等机制,确保了电源管理的可靠性。本文以TI TMS320F28

weixin_29189377的博客 374

简单的乱序算法

简单的乱许算法,思想是从n到1迭代,每次迭代随机从0到n-1中抽一个数与当前数字交换,最后得到的序列就是乱序的。该算法可以用于洗牌等地方。函数和测试程序如下: #include #include #include #define MAX 52#define swap(a, b) (a) ^= (b);(b) ^= (a);(a) ^= (b);int* shuffl

雨婷的专栏 6352

Innovus时钟树综合CTS实战:从原理到signoff的完整指南

时钟树综合(CTS)是数字后端实现中保障同步电路时序收敛的核心环节,其本质是在物理层面构建低偏斜、可控延迟的全局时钟分发网络。它基于静态时序分析(STA)原理,通过平衡clock skew、insertion delay、transition time与功耗面积等多维约束,对抗工艺电压温度(PVT)变异带来的时序不确定性。技术价值在于支撑GHz级高频芯片的setup/hold签核,广泛应用于CPU、GPU、AI加速器等复杂SoC的Innovus后端流程。本文聚焦CTS在Innovus工具链中的工程落地,覆盖

weixin_28523493的博客 223

HFSS实战(二)——精准仿真高速PCB差分线的信号完整性

本文深入探讨了使用HFSS进行高速PCB差分线信号完整性仿真的关键技术与实战经验。从设计文件导入、模型裁剪到差分端口设置,详细解析了精准仿真的全流程,特别强调了材料特性和3D电磁场仿真在解决微带线损耗等问题中的重要性。文章还提供了常见问题排查指南和效率优化技巧,帮助工程师提升高速PCB设计的仿真精度与效率。

weixin_38170829的博客 572

简单模式匹配算法和KMP算法

参见原文 简单模式匹配算法 经典的模式匹配,是让模式串的首字符从主串的首字符开始向右匹配。 匹配的规则是: 1.在主串的第i个位置,让pos=i,如果主串pos位置的字符等于模式串的第一个字符,则pos++,再与模式串的第二个字符进行匹配。 2.如果又相等则继续向下匹配,直到匹配到模式串的结尾,就说明主串中存在该模式串;如果不相等,则停止匹配,回到主串中,并i++。 3.然后再让pos=i,重复上述步骤,直到i到达主串结尾。 相应代码如下: #include<stdio.h> #include&

ccxcuixia 2371

保姆级教程:手把手教你用Python+Zemax仿真一个简易的Nd:YAG固体激光器谐振腔

本文提供了一份详细的Python与Zemax结合的Nd:YAG固体激光器谐振腔仿真教程。从基础理论到实战操作,涵盖晶体参数化、谐振腔设计、泵浦建模、动态仿真及热效应补偿等关键步骤,适合光学专业学生和工程师快速掌握激光器仿真技术。

weixin_30500473的博客 742

java简单算法题_十道简单算法题

前言最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下,重温一下。只能说慢慢积累吧~下面的题目难度都是简单的,算法的大佬可直接忽略这篇文章了~入门或者算法薄弱的同学可参考一下~很多与排序相关的小算法(合并数组、获取数字每位值的和),我都没有写下来了,因为只要会了归并排序(合并数组),会了桶排序(获取数字每位的值),这些都不成问题了。如果还不太...

weixin_35943736的博客 993

Tlsr8258开发-程序烧写

开源一小步,进步一大步

自学嵌入式 1774

wsl --install 不执行,显示帮助信息

在安装使用wsl的时候碰到了wsl --install 不执行,而显示帮助信息,提供了解决方案。

水滴爬呀爬 2771

java简单算法之获取最值

java简单算法之获取最值 例如获取某个数组的最大值和最小值 思路: 1.因为是要获取值,而获取的值为不确定的,所以需要一个变量来存储 2.取数组某个元素为变量的初始值. 3.遍历数组,取出数组每个值与此变量对比,如果大于(或小于),则将数组的值赋给变量 int[] arr = {5,1,4,6,3,8,0,7,10,12...

wxrNine_的专栏 420

Qt和FFmpeg的视频压缩工具

m_progressDialog = new QProgressDialog("正在压缩视频...", "取消", 0, 100, parent);QString file = QFileDialog::getOpenFileName(this, "选择视频文件", "",QString file = QFileDialog::getSaveFileName(this, "保存压缩文件", "",QMessageBox::warning(parent, "错误", "请设置输入和输出文件路径");

寒寒豆豆软件公司的博客 101
上一篇: ADB server didn't ACK
下一篇: Java数据结构与算法_链表
justdojava
博客等级 码龄17年 1粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值