Domanda

Se abbiamo bisogno di implementare una funzione che prende un array di interi e restituisce la massima interi nella collezione, supponendo che la lunghezza dell'array è inferiore a 1000. useresti Bubble Sort o merge sort e perché?

Inoltre, cosa succede alla scelta algoritmo sopra, se la lunghezza della matrice è maggiore di 1000? Sono un po 'confuso sul perché dovrei usare un particolare algoritmo su un altro. E 'solo a causa della sua complessità e di tempo o di altri fattori coinvolti anche in questo? Che cosa succede se devo testare la funzione di cui sopra e che vuole molto più tempo per un semplice algoritmo e meno tempo per un problema complesso?

È stato utile?

Soluzione

Non vorrei sorta affatto. Avevo appena attraversano la matrice e tenere traccia del più grande come vado. Questo richiede O (n), mentre un algoritmi di ordinamento in genere non farà meglio di O (N * log (N)).

Altri suggerimenti

Beh, se è necessario ordinare, quindi utilizzare merge sort, perché è molto più veloce di bubble sort. Per 1000 elementi ed una singola specie che probabilmente non si noterà la differenza su un computer moderno, ma per più elementi (sto pensando> = 10 000) la differenza diventa notieceable.

Consente di chiamare la lunghezza dell'array N.

Ordinamento della matrice usando Bubble Sort prende approssimativamente nell'ordine di N * N unità di tempo.

Ordinamento utilizzando merge sort prende nell'ordine di N * log N unità di tempo.

Semplicemente guardando ogni elemento uno dopo l'altro e tenere traccia di cui uno è il più grande avrà nell'ordine di N unità di tempo.

Quindi, utilizzare l'ultimo metodo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top