㈠ js如何求數組元素最大值在數組中的位置
定義一個變數a =數組第一個元素,b=0 (也就是在數組中的位置)。 然後 for 循環數組,拿數組的每個元素和a 比較。比a大的,賦值給a,然後b=當前for循環的值。 循環結束後,b就是最大數值的位置。。思路就是這樣。自己寫收獲更大
㈡ 用C#找出數組中的最大值和最小值
方法一:使用ArrayList
using
System.Collections;
int[]
arr
=
{2,4,5,6,6,55,66,89,105,669,569
};
ArrayList
list
=
new
ArrayList(arr);
list.Sort();
int
min
=
Convert.ToInt32(list[0]);
int
max
=
Convert.ToInt32(list[list.Count
-
1]);
Console.WriteLine("最大"
+
max
+"
最小:"+min);
方法二:用?:語句比較簡單
for(int
i=0;i<array.length;i++)
{
int
a=0;b=0;
a>a[i]?(b=a):(b=a[i]);只要一輪for循環就能得出最大值,同理求出最小值.
}
㈢ c語言怎麼編寫函數,找出一維數組中的最大值和最小值,並計算出數組元素的平均值
前面已經有兩位高手做出了回答,我運行了一下,《怺逺恆暒》有時候得不到正確的結果;《kaixingui2012》的不能運行,提示類型不對。不知道什麼原因,也許是我的版本有問題?
我也做了一個,感覺運行還是不錯的。請比較吧!
#include "stdio.h"
double fun(double a[],int n,int *max,int *min);/*函數原型聲明:其中a為數組,
n為數組元素個數,max指向最大數,min指向最小數,函數返回值為平均值*/
int main()
{
double b[10],aver;
int x,y=10,max=0,*ma=&max,min=0,*mi=&min;
for(x=0;x<y;x++){b[x]=x*(x-8.25)*0.1;printf("數%d=%f\n",x,b[x]);}
aver=fun(b,y,ma,mi);
printf("最大的數為第%d個數(%f),最小的數為第%d個數(%f),平均值為%f",*ma,b[*ma],*mi,b[*mi],aver);
return 0;
}
double fun(double a[],int n,int*max,int*min)
{
int i;
double sum=0;
double max1=a[0],min1=a[0];
*max=0;
*min=0;
for(i=0;i<n;i++)
{
if(a[i]>max1){*max=i;max1=a[i];}
if(a[i]<min1){*min=i;min1=a[i];}
sum=sum+a[i];
}
printf("sum=%f,n=%d\n",sum,n);
return sum/n;
}
㈣ java找數組中的最大數放到最前面
public class FindMax {
public static void main(String[] args) {
int []arr=new int[]{1,2,3,4,5};//初始化數組
for(int i=0;i<arr.length;i++)
System.out.print(arr[i]+",");//列印數組元素
System.out.println();
int max=0;
int index=0;
for(int i=0;i<arr.length;i++){//找出數組中最大的元素,賦值給max
if(arr[i]>max){
max=arr[i];
index=i;//保存最大元素在數組中的索引位置
}
}
int []arr1=new int[5];//初始化數組arr1
int j=0;
for(int i=0;i<5;i++){//將除max外的元素賦值給arr1數組的後4位
if(arr[i]!=max){
arr1[j+1]=arr[i];
j++;
}
}
arr1[0]=max;//將最大值賦值給arr1的第一個元素
for(int i=0;i<arr1.length;i++)
System.out.print(arr1[i]+",");//列印出重新排後的數組
System.out.println();
}
}
㈤ C# 數組中求幾個最大的數
int[] a=new int[]{10,32,43,12,5,36,28,45,72,49};//定義一個整型數組
Array.Sort(a); //對數據進行排序,默認為升序
int i=a.Length;
for (; i > a.Length - 3;i-- )//使用for循環輸出數組最後三位,從大到小
{
Console.WriteLine(a[i-1]);//此處容易引發數組索引越界,所以需要-1
}
Console.Read();//沒什麼用,主要讓顯示的結果不會一閃而逝
㈥ 找出最大子數組(js實現)
有長度為n 的數組,其元素都是int型整數(有正有負)。在連續的子數組中找到其和為最大值的數組。
如 [1, -2, 3, 10, -4, 7, 2, -5]的最大子數組為[3, 10, -4, 7, 2]
直接使用循環,時間復雜度O(n^3),太高了,哈哈。
分治的思想在解題過程中是經常用到的,可以通過遞歸的計算,將復雜的事情簡單化,並且時間復雜度能夠降到跟樹結構一樣,為O(nlgn)
思考下: 選定一個基準,數組中間那位數。那麼最大子數組出現的位置會有這么幾種情況:
但是這樣並不能知道最大子數組的元素,如何修改才可以呢?為了得到位置信息,那麼在每次迭代的時候除了子數組的和我們還需要表示位置的值,也就是要返回多個值。
在js中函數不能返回兩個基本類型值,但是可以返回數組或者對象
在這我採用了數組,因為我們在計算左右兩側maxSubArray的返回值時,分別需要不同的變數來接收。
因為有正有負,所以子數組的和的最大值肯定為正值(哪怕該子數組只有一個正數)。(思考下:如果數組中全是負數時呢?)
其次可以得出:最大子數組的第一個元素、最後一個元素肯定為正值。
開始遍歷數組,記錄兩個變數 current_sum+=arr[i] , max_sum=0 ,一旦 current_sum<0 是不是 current_sum 中記錄的連續元素就絕對不可能成為最大子數組?所以此時重置 current_sum=0 開始從下一個元素記錄其連續片段的和。繼續與 max_sum 比較即可。
在循環過程中只要 current_sum>max_sum ,就設置 max_sum =current_sum
這樣只需要一個遍歷,即可完成對最大子數組和的計算。時間復雜度O(n).
回答前面留下的思考:如果考慮到數組中全是負數的情況呢?
上面是根據 current_sum 是否小於0來決定 current_sum是 是否開始記錄新的子數組的和。在數組向後掃描時,針對a[i+1]有兩種選擇:
那麼判斷條件是什麼呢?是 current_sum +a[i] 與 a[i] 的值的比較。如果a[i]加上前面的和卻更小,那就將其作為新數組的第一項,同時更新記錄數組位置的值。
㈦ 求問大神,c++中怎麼設計程序在一列數字中找出最大的數呢(⊙o⊙)
簡單的方法是循環遍歷,逐個比較。
或者你可以將數組封裝在類中,定義一個變數保存最大值,以及一個索引變數記錄該值索引,初始的時候為最大值設置為-999999,盡可能小,索引設-1,。當添加第一個數的時候保存到最大值,並記錄索引,之後,每當添加一個數,就與最大值比較,如果大於最大值,則將當前值更新到該變數中,並更新索引,這樣想要取最大值的時候就不需要循環遍歷掃描了,直接取出來,效率比循環遍歷要高,特別是數組很大的時候,或者頻繁取最大值的時候,就無效一次次遍歷。
此方法不僅可以知道最大值還可以知道是哪一個數。不過要構造這樣的類,需要一點類的編程經驗。
㈧ 求數組中的最大最小值
求數組中的最大值和最小值,一般使用假設法,即假設數組的第1個元素為最大值,同時也是最小值,然後遍歷數組,找到最大值和最小值。示例如下:
#include<stdio.h>intmain(){inta[]={1,2,3,4,5,6,7,8,9,10};intmax,min;max=min=a[0];//假設第1個元素即是最大值也是最小值。intmax_pos=0,min_pos=0;//遍歷數組,找出數組a中的最大數和最小數for(intinx=0;inx!=sizeof(a)/sizeof(int);++inx){if(a[inx]>max)max=a[inx],max_pos=inx;elseif(a[inx]<min)min=a[inx],min_pos=inx;}printf("最大數:%d 最小數:%d ",max,min);return0;}
㈨ 用指針實現:找出二維數組(設3行4列)中的最大數及其位置
在內存中實際上沒有二維數組的概念,可以完全看成一維數組。求最大值,可以使用假設法,假設第1個元素為最大值,然後遍歷數組,通過比較求出最大值即可。找到在1維數組中的維數再轉換成二維數組中的維數即可。
#include<stdio.h>
intmain()
{
inta[3][4]={
{92,108,3000,1},
{100,101,102,103},
{799,10000,20,0}
};
int*pstart=&a[0][0];
intmax=a[0][0];
intpos=0;
for(intinx=0;inx!=12;++inx){
if(*(pstart+inx)>max)max=*(pstart+inx),pos=inx;
}
printf("最大值是:%d 其所在位置:a[%d][%d] ",max,pos/4,pos%4);
return0;
}