Pereiti prie turinio

Antro pagal dydi masyvo elemento paieskos algoritmas


Rekomenduojami pranešimai

int Didziausia(int[] arr, int length, int position) {
 boolean[] used = new boolean[length];
 int offset = 0;
 for (int i = 0; i < length; i++) {
   int maxPos = 0;
   for (var j = 0; j < length; j++)
     if (arr[maxPos] <= arr[j] && !used[j])
       maxPos = j;
   if(++offset == position)
     return arr[maxPos];
   used[maxPos] = true;
 }
 return -1;
}

 

Gali nusirodyti kokios pozicijos reikia, o dar šiek tiek pamodifikavus gali gražinti pilną sortintą masyvą.

Didziausia(arr, arr.length, 1) // Gražins pirmą didžiausią reikšmę ir t.t

 

P.S C++ neprogramuoju, bet kažkas tokio turėtų veikti

Redagavo liuxx
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kai au kažkas ir minėjo, tiesiog saugai dviejų didžiausių pozicijas

 

int second_maximum(int a[], int n) {
   int p[] = {0, 0};
   for (int i = 0; i < n; i++) {
       if (a[i] > a[p[1]]) {  //ar bent didesnis už jau rastą antrą didžiausią
           p[1] = i;
           if (a[p[1]] > a[p[0]]) {  //gal kartu didesnis ir už jau rastą pirmą didžiausią
               swap(p[1], p[2]);
           }
       }
   }
   return p[1];
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Whoops, my bad - pagalvojau, kad veiks neisbandes praktiskai :)

 

Kol kas vienas is variantu:

int A[7] = { 3, 5, 7, 9, 4, 6, 3 };
int n = 6;
int vieta = 0;
int antras = 0;
// Randam pirma didziausia
for (int i = 0; i <= n; i++){
	if (A[i] > A[vieta]) vieta = i;
}
// Randam antra didziausia nelygu pirmam didziausiam
for (int i = 0; i <= n; i++){
	if (A[i] > A[antras] && A[i] != A[vieta])
	{
		antras = i;
	}
}
cout << "---" << vieta << endl;
cout << "---" << antras << endl;

 

 

Zinoma, galima ir geriau padaryti manau, bet cia jau tau spresti ar reikia ar ne :) Esme su siuo pavyzdziu turetum lengvai suprasti :)

 

Edit: Katik pagalvojau, kad reikia tikrinti ne su i != vieta, o reiksme, kad nebutu lygi :D

Redagavo ModestasV
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...