求出数组a的n个元素中的最小值,函数原型: int min(int a[],int n);

求出数组a的n个元素中的最小值,函数原型: int min(int a[],int n);,第1张

# include<stdioh>
int min(int a[],int n)
{
for(int i=0;i<n-1;i++)
{
if(a[i]<a[i+1])
{
int temp;
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
return a[n-1];
}
int main(void)
{
int mi,a[100];
printf("请输入整数的个数:");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("\n请输入a[%d] : ",i);
scanf("%d",&a[i]);
}
mi = min(a,n);
printf("此数组中最小的数为 %d\n",mi);
return 0;
}
希望我的回答对你有所帮助

java编写程序,找出一维数组中元素的最大值最小值

方法1:

import javautil;
public class Main{
public static void main (String args[ ]) { 
int a1[ ]=new int[] {5,3,6,8,10,56};
Arrayssort(a1);
Systemoutprintln("最大值:"+a1[a1length-1]);
Systemoutprintln("最小值:"+a1[0]);
}
}

方法2:

public class a { 
 public static void main(String args[]) { 
  int a[]={84,40,16,3,10,49,28,76,94,70}; 
  int n; 
  int min=a[0]; 
  int i; 
  int max=a[0]; 
  for(n=0;n<=9;n++) { 
  if(max<a[n]) 
   max=a[n]; 
  } 
  for(i=0;i<=9;i++) { 
  if(min>a) 
  min=a; 
  } 
  Systemoutprint("max="+max); 
  Systemoutprint("min="+min); 
 } 
}

实现思路就是循环判断找到最大值和最小值,保存起来和其他的值进行比较。代码如下:
public class TestJava4_3
{
public static void main(String args[])
{
int i,min,max;
int A[]={74,48,30,17,62}; // 声明整数数组A,并赋初值
min=max=A[0];
Systemoutprint("数组A的元素包括:");
int j =0;
int n =0 ;
for(i=0;i<Alength;i++)
{
Systemoutprint(A[i]+" ");
if(A[i]>max) // 判断最大值
j =i;
max=A[i];
if(A[i]<min) // 判断最小值
min=A[i];
n =i
}
Systemoutprintln("\n数组的最大值是:"+max+"数组的位置是:"+(j+1)); // 输出最大值和最大值的位置
Systemoutprintln("数组的最小值是:"+min+"数组的位置是:"+(n+1)); // 输出最小值
}
}

public int min(int[] a){
int b=a[0];
for(int i=1;i<alength;i++){
if(a[i]<b){
b=a[i];

}

}
return b;
}

寻找一个数组中的最大和最小数
工作一段快两年了,感觉之前学的数据结构和算法基本忘得差不多了,最近一段时间准备复习一下相关知识。
有一个求数组中最大和最小数的题目,基本的思路是遍历一遍数组,然后每个一个元素都和最大值和最小值比较,时间复杂度是2(N-1)或2N。
比较简单的一种减少复杂度的方法是把数组的元素两两分组比较,然后较大的数和max比较,较小的数和min比较,这种实现方法的时间复杂度是15N。
还有一种是采用分治法,比较次数也是15N,思路是将数组一分为二,分别获取两个子数组的最大和最小值,然后进行取两个子数组中较小的最小值和较大的最大值。
O(N) = (N/2 + N/4 + … + N/2^(log2(N))) = 3N/2
#include <cstdio>
void max_min(int a[], int begin, int end, int max, int min) {
if (end == begin) {
max = a[begin];
min = a[end];
return;
}
int l_max, r_max;
int l_min, r_min;
max_min(a, begin, begin + (end - begin) / 2, &l_max, &l_min);
max_min(a, begin + (end - begin) / 2 + 1, end, &r_max, &r_min);
max = l_max > r_max l_max : r_max;
min = l_min < r_min l_min : r_min;
}
int main() {
int array[] = {5,7,8,9,11,13,45,8,9,23,45,97,3,2,7,14,64};
int len = sizeof(array) / sizeof(int);
int max = array[0];
int min = array[0];
for (int i = 1; i < len; ++i) {
if (array[i] > max) {
max = array[i];
} else if (array[i] < min){
min = array[i];
}
}
printf("max:%d min:%d", max, min);
int start = -1;
if (len & 0x1) {
start = 1;
} else {
start = 0;
}
for (int i = start; i < len; i+=2) {
if (array[i] > array[i + 1]) {
if (array[i] > max) max = array[i];
if (array[i + 1] < min) min = array[i + 1];
} else if (array[i] < array[i + 1]) {
if (array[i] < min) min = array[i];
if (array[i + 1] > max) max = array[i + 1];
}
}
printf("max:%d min:%d", max, min);
max_min(array, 0, len - 1, &max, &min);
printf("max:%d min:%d", max, min);
return 0;
}

可以先排序再输出最小的两个数

也可以采用下面的方法,不用排序直接给出最小的两个数

思路:数组中数和两个数依序比较,比这两个中的一个小,则与其交换

void getmin(int array[],int arraylen,int out[],int outlen)
{//outlen应该为2
    int i,j;
    for(i=0;i<outlen;i++)out[i] = 0x7FFFFFFF;//这是一个最大整数值
    for(i=0;i<arraylen;i++){//遍历数组
        for(j=0;j<outlen;j++){//遍历最小数列表
            if(array[i]<out[j]){//array中的数更小
                out[j] = array[i];//记录该数
                break;
            }
            //如果out中的数小,则看看下一个out数会不会比这个大
        }
    }
}

这个方法可以适用于查找一维数组中最小的n个数

#include<stdioh>

int main()

{

int a[11],min=0,t;

for(int i=0;i<10;i++)

scanf("%d",&a[i]);

min=a[0];

for(int i=0;i<10;i++)

if(a[i]<min)//求最小值

min=a[i];

for(int i=0;i<10;i++)//冒泡排序

for(int j=0;j<9-i;j++)

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

for(int i=0;i<10;i++)

printf("%d  ",a[i]);

printf("\n%d",min);

return 0;

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12852605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存