顺序表第一题(删除顺序表中最小值)

1.从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。

空出的位置由最后一个元素填补。若顺序表为空则显示出错信息并退出运行。

思路 ;

设立两个变量,

一个变量就是最小值的变量,我们最开始初始值赋为我们的第一个元素---Min=arr[0],

还有一个变量就是最小值的位置信息变量,因为我们需要知道他的位置信息,

才能够在将最后一个元素附到它应该在的位置,

将最开始的位置信息设为零,就是第一个位置---minPos=0

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int deleteMin(int *arr,int len) {
	if (!len) return ;//数组为空,退出运行
	int minPos=0,min=*arr;
	for (int i = 1; i < len;i++) {
		if (min>*(arr+i)) {
			min = *(arr + i);
			minPos = i;
		}
	}
	//找到最小值之后,进行交换
	*(arr + minPos) = *(arr + len - 1);
	*(arr + len - 1) = NULL;
	return min;
}
int main() {
	int n;//手动输入数组长度
	printf("请输入数组长度:");
	scanf("%d",&n);
	int *arr = (int *)malloc(sizeof(n));//动态分配数组
	printf("请输入数组的元素值,输入一个以enter结束");
	for (int i = 0; i < n;i++) 
		scanf("%d",arr+i);
	for (int i = 0; i < n;i++) //原始数组
		printf("%d",*(arr+i));
	printf("\n");
	deleteMin(arr,n);
	for (int i = 0; i < n-1; i++)//当前数组
		printf("%d", *(arr + i));
	return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 定义一个变量min记录当前已经找到的最小值,初始化为L[0]。 2. 从L[1]开始遍历整个列表,每次比较当前元素与min的大小,如果小于min,则将min更新为当前元素。 3. 遍历完成后,min即为整个列表最小值。 代码实现: ``` def find_min(L): # 初始化最小值第一个元素 min = L[0] # 遍历列表的元素 for i in range(1, len(L)): if L[i] < min: min = L[i] return min ``` ### 回答2: 在顺序表L查找最小的元素可以通过遍历整个顺序表,依次比较每个元素的值来找到最小值。可以定义一个变量min来存储当前找到的最小值,初始值可以是L第一个元素。然后,使用循环从第二个元素开始遍历顺序表L,每次将当前元素与min进行比较,如果当前元素小于min,则将min更新为当前元素的值,否则继续遍历下一个元素。最后,循环结束时,min存储的就是顺序表L最小值。 下面是一个用伪代码表示的实现过程: ``` min = L[0] # 假设顺序表L的长度大于等于1 for i in range(1, len(L)): if L[i] < min: min = L[i] return min ``` 通过上述方法,可以快速在顺序表L找到唯一的最小元素,并返回其值。这种方法的时间复杂度是O(n),其n是顺序表L的长度,即每个元素都需要比较一次。 ### 回答3: 要在顺序表L查找最小元素,可以使用遍历的方法。首先,我们可以将顺序表的首个元素作为最小值,并将其保存在一个变量min_value。然后,逐个比较顺序表的其他元素与min_value的大小。如果一个元素比min_value小,就将该元素更新为min_value的新值。 具体的步骤如下:首先,将顺序表第一个元素赋予变量min_value。然后,从顺序表的第二个元素开始,使用循环依次遍历每个元素。在循环过程,将当前元素与min_value进行比较。如果当前元素小于min_value,则将该元素的值赋予min_value,更新最小值。循环结束后,min_value将存储着顺序表L最小元素的值。 这种遍历方法可以保证找到最小元素,因为我们从第一个元素开始比较,逐个向后移动,并不断更新最小值。当遍历到最后一个元素时,min_value就保存了顺序表L最小元素。 需要注意的是,这种遍历的方法需要将元素逐个进行比较,所以时间复杂度为O(n),其n是顺序表L的长度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值