한 배열 에서 최대 최소 수 를 동시에 찾 아 라. - 알고리즘 서론 9 장.
for(int i=0;ilength;i++){
if(min>array[i]){
min=array[i];
}
(2) 최대 최소 치 를 동시에 꺼 내 는 것 은 한 번 만 옮 겨 다 니 는 것 을 의미한다.
실제로 기껏해야 3 * n / 2 번 이면 됩 니 다. 요 소 를 쌍 으로 처리 할 수 있 습 니 다. 먼저 각 쌍 의 크기 를 비교 한 다음 에 큰 것 과 최대 치 를 비교 하고 작은 것 과 최소 치 를 비교 할 수 있 습 니 다.패 리 티: 홀수 개: 최대 와 최소 값 을 첫 번 째 값 짝수 개 로 설정 합 니 다. 최대 와 최소 값 을 각각 앞의 두 개 로 설정 합 니 다.사실 남 은 게 짝수 라 는 걸 보증 해 야 돼 요.
public void getMax_Min(int a[]){
int len=a.length;
int max=0,min=0;
int i=0,j=len-1;
if(len%2==0){
if(a[0]>a[1])
{ max=a[0];
min=a[1];
}
else{
max=a[1];
min=a[0];
}
i=2;// 2
}
else{
max=a[0];
min=a[0];
i=1;
}
while(iif(a[i]max=a[j]>max?a[j]:max;
min=a[i]<min?a[i]:min;
}
else{
max=a[i]>max?a[i]:max;
min=a[j]<min?a[j]:min;
}
i++;
j--;
}
System.out.println(max+" "+min);
}
선형 시간 내 에 배열 a 의 i 작은 (또는 큰) 요 소 를 구하 고 작은 것 을 예 로 들 면:
public int getRandom_select(int a[],int start,int end,int i){
if(start==end){
return a[start];
}
int q=Partition(a,start,end);
//System.out.println("q"+q+"start"+start+"i"+i);
if((q-start+1)==i){// q-start+1, q, i, , q 0——a.length , k
//System.out.println("q"+q+" "+i);
return a[q];
}
int k=q-start+1;// start q
if(k>i)
return getRandom_select(a,start,q-1,i);
else {
return getRandom_select(a,q+1,end,i-k);
}
}
int Partition(int a[],int left,int right)// ,
{
int i=left;
int j=right;
int temp=a[left];
System.out.println("temp"+temp);
while(iwhile (i=temp)
j--;
if(iwhile(iif(ireturn i;
}
평균 적 인 상황 에서 시간 복잡 도 는 o (n) 이 고 최 악의 경 우 는 매번 남 은 요소 가 가장 큰 것 으로 나 뉘 는 것 이 o (n ^ 2) 이다.
* 5 번 째 작은 0, 8, 5, 2, 4, 6, 19, 23 20 을 취하 여 처음으로 Start = 0, end = 9 로 구분한다.q = 0 얻 기;,구분 후 배열 8, 5, 2, 4, 6, 3, 19, 23, 20 의 결 과 는 a [1] = 8 부터 시작 되 는데 이때 4 번 째 로 작 아야 하기 때문에 비교 할 때 반드시 q - (현재 의) start + 1 * * * *
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.