c_cpp 找到数组中最小和最小的元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 找到数组中最小和最小的元素相关的知识,希望对你有一定的参考价值。
#include <iostream>
using namespace std;
int merge(int a[],int l,int m, int r){
int n1=m-l+1,n2=r-m;
int b[n1],c[n2];
for(int i=0;i<n1;i++)
b[i]=a[i+l];
for(int i=0;i<n2;i++)
c[i]=a[i+m+1];
int i=0,j=0,k=l;
while(i < n1 && j<n2){
if (b[i]<c[j])
a[k++]=b[i++];
else
a[k++]=c[j++];
}
while(i<n1)
a[k++]=b[i++];
while(j<n2)
a[k++]=c[j++];
}
int mergesort(int a[],int l,int r){
if (r>l){
int m=(l+r)/2;
mergesort(a,l,m);
mergesort(a,m+1,r);
merge(a,l,m,r);
}
}
int main(){
int n;
cin >> n;
int a[n];
for(int i=0;i<n;i++)
cin >> a[i];
mergesort(a,0,n-1);
int l=0,r=n-1,min_sum=INT_MAX,min_l,min_r;
while(l<r){
int sum = a[l]+a[r];
if (abs(min_sum)>abs(sum)){
min_sum = sum;
min_l = l;
min_r = r;
}
if (sum<0)
l++;
else
r--;
}
cout << min_sum<<" "<<a[min_l]<<" "<<a[min_r];
}
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
int min1=a[0], min2=a[0];
for (int i=1;i<n;i++){
if (a[i] < min1 && a[i] < min2){
min2 = min1;
min1 = a[i];
}
if (a[i] > min1 && a[i] < min2)
min2 = a[i];
}
cout<<min1<<" "<<min2;
}
以上是关于c_cpp 找到数组中最小和最小的元素的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 通过最小增量使元素在排序数组中不同
c_cpp 查找包含T中所有元素的S中的最小窗口。给定一组字符T和一个字符串S,找到S中的最小窗口
c_cpp 查找包含T中所有元素的S中的最小窗口。给定一组字符T和一个字符串S,找到S中的最小窗口
c_cpp 从两个排序的数组中获取第k个最小元素。数组中的前k个
c_cpp 递增排序的数组(元素不重复),旋转一定长度后,求数组中最小的数。如{1,2,3,4,5,6},旋转后{4,5,6,1,2, 3},旋转后的数组最小值为1
c_cpp 找到最小长度未排序的子阵列,排序使整个数组排序