Ho difficoltà a provare a trovare un algoritmo con efficienza O (n) runtine.Algoritmo di ordinamento - trova la barra della carta che vede la barra diversa
Fornito con una matrice di dimensione n, la matrice contiene numeri interi, ad esempio. Devo sapere quale cella dell'array (si può immaginare come barra grafica) sta cercando su quale cella.
Formalmente: lookingAtIndex(i) = max { -1} U {j | arr[j] > arr[i], j<i}
, dove -1
corrisponde all'asse y.
Modifica: qual è la prima barra che è superiore alla barra corrente dove im a. Se non ce n'è uno, il suo asse Y Esempio, fornito con array: 7,3,5,2,1,9 ..
Quindi 7 sta guardando sull'asse y, 3 sta guardando 7, 5 è guardando 7, 2 su 5, 1 su 2 e 9 su asse y.
Sono un po 'perso, tutto ciò che faccio rimango in O (nLogn). Non è un algoritmo di ordinamento completo, quindi è possibile farlo con O (n). Stampa i risultati è possibile mentre è in esecuzione, non è necessario memorizzare le informazioni fino alla fine.
Non è chiaro cosa intendi per "guardare", ti preghiamo di elaborare e preferibilmente dare una definizione formale. – amit
Significato qual è la prima barra che è superiore alla barra corrente dove im a. Se non ce n'è uno, il suo asse Y. –
Capito, ha aggiunto una definizione formale alla tua domanda. Si noti inoltre che l'affermazione 'Non è un algoritmo di ordinamento completo, quindi è possibile farlo con O (n)' non è vero, ad esempio il problema di distinzione degli elementi nel modello di calcolo dell'albero algebrico. – amit