Diciamo che ho tre array a
, b
e c
di uguale lunghezza N
. Gli elementi di ciascuno di questi array provengono da un totally ordered set, ma non sono ordinati. Ho anche due variabili di indice, i
e j
. Per tutti i != j
, voglio contare il numero di coppie di indice tale che a[i] < a[j]
, b[i] > b[j]
e c[i] < c[j]
. Esiste un modo in cui ciò può essere fatto in meno di O (N^2) complessità temporale, ad esempio mediante l'uso creativo degli algoritmi di ordinamento?Modo efficiente per trovare ordini di coppia?
Note: L'ispirazione per questa domanda è che, se hai solo due array, a
e b
, è possibile trovare il numero di coppie di indice in modo tale che a[i] < a[j]
e b[i] > b[j]
in O(N log N) with a merge sort. Sto fondamentalmente cercando una generalizzazione a tre matrici.
Per semplicità, si può presumere che due elementi di qualsiasi matrice sono uguali (legami).
Sei voler un singolo array quando questo algoritmo finisce? Per esempio. un array che memorizza tutti gli elementi da 'a',' b' e 'c' in un ordine ordinato? – Davidann
Puoi dare un esempio di cosa è un "ordinamento totale ben definito"? – Davidann
Un ordinamento totale su un set contiene antisimmetria, transitività e totalità; guarda l'articolo sul Wiki per maggiori informazioni. http://en.wikipedia.org/wiki/Total_order – Tim