【入门】最小数

描述

输入n个整数的数列,请找出数列中最小数所在的位置(若有多个最小数,则选最左边的那个最小数),把它与数列的第一个数对调,其他数的位置不动,输出此数列。

输入描述

数组数的个数n (N<=200) 一行n个数,用空格分开(都<=32767)

输出描述

第一行:最小数所在的位置(只需要输出最左边的一个的位置) 第二行:交换后的数组(一个空格隔开)

用例输入 1 

3
2 6 1

用例输出 1 

3
1 6 2

来源

数组问题

#include <bits/stdc++.h>
using namespace std;
int main() {
int n,minn=INT_MAX,t;
    cin>>n;
    int a[n+1];
    for(int i=1;i<=n;i++){
        cin>>a[i];
        minn=min(a[i],minn);
        if(a[i]==minn) t=i;
    }
    swap(a[1],a[t]);
    cout<<t<<endl;
    for(int i=1;i<=n;i++){
        cout<<a[i]<<' ';
    }
 return 0;
}

### 删除数组中的小数 对于初学者来说,在编程中处理数组并从中移除特定元素是一项基本技能。下面将以Java为例展示如何从整型数组中删除小数值。 #### 方法一:转换成列表再操作后转回数组 由于数组长度固定不可变,因此可以先将给定的原始int[]类型的数组转化为ArrayList<Integer>对象以便于执行remove()方法来去掉其中的一个指定值——即找到的那个小值;之后再次调用toArray()函数把修改后的集合重新封装为新的整形数组返回出去[^1]。 ```java import java.util.Arrays; import java.util.ArrayList; import java.util.Collections; public class RemoveMinFromArray { public static int[] removeSmallest(int[] originalArray){ // 将原数组变为List方便后续操作 ArrayList<Integer> list = new ArrayList<>(); for (int item : originalArray) { list.add(item); } // 找到小值的位置并移除它 Integer minValue = Collections.min(list); list.remove(minValue); // 转换回数组形式 return list.stream().mapToInt(i->i).toArray(); } public static void main(String args[]){ int[] myIntArray={5,3,7,-9}; System.out.println("Original Array:"+Arrays.toString(myIntArray)); int[] result=RemoveMinFromArray.removeSmallest(myIntArray); System.out.println("After removing min value:"+Arrays.toString(result)); } } ``` 此段代码实现了上述逻辑,并通过`main()`测试展示了功能效果。需要注意的是当存在多个相同大小的小值时只会去除掉第一个遇到的那个。 #### 方法二:创建新数组不包含小值 另一种方式是遍历一次输入参数传入的方法体内定义好的源数据结构(这里假设还是简单的一维向量),记录下其内部绝对意义上的极小者以及对应索引位置indexMin;接着开辟一块临时空间用于装载除了那个特殊成员之外其余所有项构成的新序列,终复制回去覆盖旧版本即可完成任务目标。 ```java public class MinRemover { public static int[] excludeMinimumElement(int[] sourceData){ if(sourceData.length<=0)return null; int indexMin=-1,valueMin=Integer.MAX_VALUE; for(int i=0;i<sourceData.length;++i){ if(valueMin>sourceData[i]){ valueMin=sourceData[i]; indexMin=i; } } int [] newData=new int[sourceData.length-1]; for(int j=0,k=0;j<sourceData.length;++j){ if(j!=indexMin)newData[k++]=sourceData[j]; } return newData; } public static void main(String[]args){ int[] testData={8,6,7,5,3,0,9}; System.out.print("Before removal:"); System.out.println(Arrays.toString(testData)); int[] processedData=excludeMinimumElement(testData); System.out.print("After deletion of minimal element:"); System.out.println(Arrays.toString(processedData)); } } ``` 这段程序同样完成了预期的功能,而且效率上可能更优一些因为不需要额外引入其他类库支持下的动态容器特性就能解决问题所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值