每日一题——王道考研2.2.4.1_ArimaMisaki的博客-程序员宅基地

技术标签: 算法  算法每日一题  排序算法  

1 题目

从顺序表中删除具有最小值的元素(假设唯一),并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。

——出自王道书2023版2.2.4的第二大题第一小题

2 思路

既然是记录最小值,那肯定要指定一个变量来记录这个最小值。而删除该元素后要用最后一个元素填补,那只要扫描到最后然后把该元素记录下来赋值给被删元素即可。

image-20220301190450063

3 代码实现

bool Del_Min(sqList &L,ElemType &value)
{
	//如果表为空则报错
	if(L.length == 0)
	{
		return false;
	}
	//指定一个数来记住被删除的位置
	int MinIndex = 0;
	//变量用于读取顺序表中的值
	value = L.data[0];
	for(int i = 1;i<L.length;i++)
	{
		//如果每次循环发现提取值小于当前value记录的值,就把value的值替换
		if(value>L.data[i])
		{
			value = L.data[i];
			MinIndex = i;
		}
	}
	//用最后一个元素来填补删除的位置
	L.data[pos] =  L.data[L.length-1];
	
	//表长减少1
	L.length--;
	
	return true;
}

4 小结

时间复杂度为O(n),空间复杂度为O(1)。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chengyuhaomei520/article/details/123213218

智能推荐

机器学习技法笔记13:深度学习-程序员宅基地

本节课主要讲解深度学习部分的预训练方法,以及PCA降维方法

html2canvas字体重叠,手摸手教你用canvas实现给图片添加平铺水印的实现-程序员宅基地

canvas 怎么实现为ajax返回的图片添加水印1.文件——打开需要添加水印的图片 2.点击饰品-导入更多饰品-用户自定义-导入-选择水印文件(导入完成后) 3.点击饰品-用户自定义-选择你导入的水印文件 4.用鼠标控制水印的位置。选择好自己想要的位置 5.可以鼠标单击水营———可以调整水印的透明度怎么使用光影魔术手在图片上加上平铺的水印?使用光影魔术手在图片上加上平铺的水印,怎么弄?就是那种半..._canvas水印平铺

javaScript运行机制 (同步与异步)的理解-程序员宅基地

javaScript的特点javaScript的最大特点就是单线程。什么是单线程,可以理解为一条流水线,同一时间只能干一件事,不能同时做多件事。为什么js是单线程,js的目的是为了与用户进行交互,以及操作dom。这一目的决定了js只能是单线程的,不然同一时间进行不同的dom操作(如增、删),那么以谁为主,就不好说了。同步于异步同步与异步的差异:在一条流水线(单线程)上各个任务执行的顺序不同...

严格次小生成树 最小生成树+树上倍增-程序员宅基地

严格次小生成树一定要注意是严格次小!!。。。Solution:相信大家不难想到:先做一遍最小生成树,然后枚举剩下的边,然后在树上倍增,把最大的那条边给去掉,把这条给加上,全局取min。然后你会发现你开心的交完后,只有80。I:诶诶诶,怎么回事,明明是没错的啊。再看看。。。某神ben:你好呆( ̄_, ̄ )看了题目没。。。I:略略略,溜了溜了。。好吧,这个题唯一需要注意的就是:严..._最小生成树求严格次小生成树

java面试题总结及答案,使用/教程/实例_java面试问题及答案-程序员宅基地

找大厂面试题,看套路!Java面试题及答案及面试解析以下面试题就是小编为大家准备的,希望对大家有用! 1.面向对象的特征是什么? 答:面向对象的特征主要包括以下几个方面: 抽象:抽象是总结一类 请阅读严宏博士的Java模式或设计模式解释中的桥梁模式)。 封装:一般认为封装是将数据和操作数据的方法绑定起来,数据的访问只能通过定义。吐血总结!50道Python面试题集锦(附答案)Python是目前编程领域最受欢迎的语言。在本文中,我将总结Python面试中最常见的50个问题。每道题都提供参考答案,希望能_java面试问题及答案

【状态估计】卡尔曼滤波、扩展卡尔曼滤波、无迹卡尔曼滤波、库图尔卡尔曼滤波、M-估计、鲁棒立方卡尔曼滤波器实现无人机位置跟踪、迎角和俯仰角跟踪, 方向角度跟踪等研究(Matlab代实现)_荔枝科研社的博客-程序员宅基地

随着无人机技术的发展固定翼无人机由于其成本低飞行速度快、高度高可按规划航迹自主飞行等特点广泛应用于军事和民用领域,进而对无人机飞行时完整的状态反馈提出了更高的要求。但同时大多数无人机配置着由低成本微机电系统、磁力计GPS及气压传感器组成的低成本飞控系统这些传感器在测量过程中会产生持续的噪声和漂移,从而造成严重后果。且利用这样的飞控系统研究无人机自主飞行控制问题,虽可以明显降低其研究成本,但随着时间的增加传感器的测量误差被叠加,严重影响无人机的控制精度。

随便推点

python获取文件名中两条下划线之间的部分_详解Python类中的特殊方法(前后都有双下划线的方法)-__len__、__str__、__getitem__、__iter__、__getattr__...-程序员宅基地

详解Python类中的特殊方法(前后都有双下划线的方法)-len、str、getitem、iter、getattr、call等类中定义的一些特殊方法,也就是方法名称前后都有双下划线标识的方法,都具有特殊的意义,重写这些方法可以帮助类更好地发挥功能,这里主要介绍几种常用的、重要的方法。我们以一个偶数类(Even)为例,其中会创建一个N个偶数的列表,同时创建一个该类的实例even:class Even..._python 通过文件名的下划线位置查找

Android项目中applicationid 和 包名的区别_android applicationid "com.jsxd-程序员宅基地

applicationId在Android系统中是作为应用的唯一标识,即在一个Android设备中所有的应用程序的applicationId都是唯一的manifest中的package 只是项目配置的入径包名(包结构),某个类在com.aa.bbb中1.修改applicationId 在项目build.gradle 里面修改即可2.修改package 包结构会出现一个提示框 选择Renam..._android applicationid "com.jsxd

v-bind指令之动态绑定class_v-bind:class={active:}-程序员宅基地

为什么我们需要动态的绑定class?因为很多时候,我们希望动态的切换class。我们想实现这样的功能:一行文字,一个按钮,我们希望点击一下按钮,字体显示红色,再点击一下按钮,字体显示为黑色。这个时候使用v-bind动态绑定class实现起来会非常的方便,思想:当点击按钮时,class生效,再点击一下按钮,让class失效。实现代码为: <style> .active{ color: red; } </style><div id=_v-bind:class={active:}

Spring组件扫描<context:component-scan/>使用详解-程序员宅基地

1. 如果不想在xml文件中配置bean,我们可以给我们的类加上spring组件注解,只需再配置下spring的扫描器就可以实现bean的自动载入。 2. 下面是引用spring framework开发手册中的一段话“ Spring 2.5引入了更多典型化注解(stereotype annotations): @Component、@Service和 @Controlle

JAVA中getClass()以及getName()方法_java getname-程序员宅基地

getClasspublic final Class&lt;?&gt; getClass()返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。Java的引用变量有两个类型,编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。public class ..._java getname

微信小程序自定义弹窗功能实现_微信小程序弹窗功能实现-程序员宅基地

微信小程序自定义弹窗功能实现_微信小程序弹窗功能实现