|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
[C] il mediano di due vettori ...
Ciao,
porgo anche a voi questo problemino.. ho due array con lo stesso numero di elementi, e sono entrambi ordinati (suppongo entrambi crescenti). Devo torvare l'elemento mediano che si ottierrebbe facilmente creando un unico array ordinato composto dalla fusione degli elementi dei due array di partenza, ma arriva il bello...ho un vincolo di complessita..questa deve essere nella classe O(lg(n))...e ovviamente non posso ordinare sti array altrimenti sfonderei gia sto vincolo. Vi porto un esempio.. se i vettori sono A[1,5,8,14,22] B[3,4,9,10,25] 1,3,4,5,8 ,9,10,14,22,25 avendo ora 2n elementi in ogni caso i mediani di per se sono sempre due per cui devo ritornare il minore..in questo caso 8 Suggerimenti? cionci, non dubito delle tue capacità, ma magari qualcun'altro puo darci una dritta..
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
il mediano è quel valore che sta in centro alla distribuzione? non mi ricordo +
![]() ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
![]() |
![]() |
![]() |
#3 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 12:41. |
![]() |
![]() |
![]() |
#4 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 12:40. |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
Quote:
si come nell'esempio..
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
Quote:
Grazie per la partecipazione anzitutto.. Mi ci vorra un po per vedere che fa questo codice di preciso preciso. Ho visto 2 do-while, la complessità risulta cmq O(lg(n))?
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
|
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 12:40. |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
Ha.. mi è stato consigliato di valutare una possibile variante alla ricerca binaria. Si puo quindi implementare anche diversamente quindi, magari ricorsivmente.
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
e questo come vai pare?
Codice:
int cerca_mediano(int x[], int s1, int y[], int s2) { int count=0; int i,j=0; do {if (x[i]<y[j]) while (x[i]<y[j] && count<s1) {i++; count++;} else while(y[j]<x[i] && count<s1) {j++; count++;} }while (count!=(s1/2)-2); if (x[i]<y[j]) return x[i]; else return y[j]; } Non riesco a provarlo.. Devc++ svanga le balle.. che altro posso usare sotto win?!? ...gratuito...
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
![]() |
![]() |
![]() |
#10 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Ultima modifica di repne scasb : 03-02-2005 alle 12:39. |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
se vuoi un ottimo compilatore in ambiente win32 gratuito vai sul sito borland e scarica il c++builderX previa registrazione, tutto gratuito (solo inglese)
![]() |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
questo funzia, ma credo sia di complessita O(n)..che dite?
Codice:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int count=0; int i=0; int j=0; int k=(6-1);/*k=n-1*/ int x[6]={2,5,7,9,23,25}; int y[6]={4,6,8,10,12,34}; do {if (x[i]<=y[j]) while (x[i]<=y[j]) {i++; count++;} else while(y[j]<x[i]) {j++; count++;} }while (count!=k); if (x[i]<y[j]) printf ("Il mediano risulta: %d\n",x[i]); else printf ("Il mediano risulta: %d\n",y[j]); system("PAUSE"); }
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
Quote:
ok grazie provvedero al piu presto.. ma che versione devo prendere? la enterprise trial o la personal? o che altro? ho fatto riferimento a questo link
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
la personal
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:42.