LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

Il metodo di inserimento diretto può essere migliorato individuando il record inserito in una sottotabella ordinata utilizzando il metodo binario (dicotomico, binario, logaritmico) ricerca. Questa modifica del metodo di inserimento è denominata inserire con inclusione binaria.

Prendere in considerazione j-La fase di smistamento ( j=2, 3, ..., n). Se un K[ j]>= K[ j-1] , quindi l'ordine non viene violato e si dovrebbe andare a R[ j+1]– oh record. Se K[ j]< K[ j-1] poi R[ j] ricordato nella variabile di lavoro (Rab= R[ j]) e si cerca un posto nella parte ordinata del tavolo - nel sottotabella. Indichiamo il limite inferiore dell'indice di questa sottotabella con ng, superiore - attraverso vg (originariamente ng=1. vg\u003d j-1).

Secondo la chiave di ricerca binaria K[ j] il record in questione R[ j] deve prima confrontare con la chiave K[ io] record R[ io] nel mezzo di un sottotabella ordinato (i \u003d (ng + vg) div 2)... Se un K[ j]> K[ io], poi scartato (cioè non più considerato) lato sinistro sotto-tabelle - record con chiavi più piccole (ng= io+1) ... Se un K[ j]< K[ io] , quindi il lato destro della sottotabella viene scartato: record con chiavi grandi (vg= io-1). La ricerca continua nel resto della sottotabella. Il processo di divisione a metà di parti di un sottotabella continua fino a quando non si verifica una delle seguenti situazioni:

1) K[ j]= K[ io] , quindi, (i + 1)La -esima posizione è la posizione per la voce in questione. Sposta record R[ io+1], R[ io+2], …, R[ j-1] una posizione a destra e quindi liberare spazio per l'inserimento (R[ io+1]= Rab).

2) K[ j]<> K[ io] e ng> vg - le chiavi non corrispondono e la lunghezza dell'ultima sottotabella è 1. In questo caso, il punto di inserimento è la posizione ng, quindi registra R[ ng], R[ ng+1], … , R[ j-1] dovrebbe essere spostato di una posizione a destra (R[ ng]= Rab) .

L'algoritmo di ricerca binaria è descritto in dettaglio nella sezione "Ricerca di coincidenza dicotomica".

Consideriamo un esempio j-sima fase di smistamento (viene determinata la posizione del record con chiave uguale a 9; j=7, K[ j]=9 ):

Numero medio di confronti per questo metodo è n log 2 (n).

Metodo di inserimento a due vie

Metodo di inserimento a due vie è una modifica del metodo di inserimento diretto; migliora le prestazioni di smistamento.

Per implementare questo metodo è richiesta memoria aggiuntiva, pari alla quantità occupata dalla tabella da ordinare (chiamiamola zona di output T). Nella prima fase dell'ordinamento al centro dell'area di output (position m \u003d (n div 2) +1) viene posizionato il primo record della tabella R. Altre posizioni T mentre vuoto. Nelle fasi successive dell'ordinamento, la chiave del record successivo R[ j] (j=2, 3, …, n) viene confrontato con la chiave di scrittura T[ m] e, a seconda dei risultati del confronto, un posto per R[ j] trovato in T a sinistra oa destra di T[ m] con il metodo di inserimento. In questo caso, i numeri dell'estrema sinistra ( l) e il più a destra ( r) inclusa nell'area di output degli elementi. Valori finali le rsono uguali 1 e n rispettivamente.

L'algoritmo dovrebbe anche tenere conto delle seguenti situazioni:

    scrivere la chiave R [j] meno chiave di scrittura T [m]ma l \u003d 1;

    scrivere la chiave R [j] più chiave di scrittura T [m]ma r \u003d n.

In questi casi, inserire un record R[ j] è necessario spostare i record della sottotabella insieme al record T[ m] destra o sinistra (utilizzando il metodo di inserimento diretto).

Diamo un'occhiata a un esempio di ordinamento utilizzando questo metodo.

Lascia che la sequenza originale di chiavi di tabella abbia la forma:

24, 1, 28, 7, 25, 3, 6, 18, 8 (n=9, m=(n div 2)+ 1=5)

Numero di passaggio

Area di ritiro

L'ordinamento per inclusione, come l'ordinamento per selezione semplice, viene solitamente utilizzato per gli array che non contengono elementi duplicati.

L'ordinamento con il metodo di inclusione diretta, come tutti quelli sopra descritti, viene eseguito per fasi. Al k-esimo passo, si considera che la parte dell'array contenente i primi k-1 elementi sia già ordinata, cioè

a ≤ a ≤ ... ≤ a.

Successivamente, è necessario prendere l'elemento k-esimo e selezionare un posto per esso nella parte ordinata dell'array in modo che dopo il suo inserimento l'ordinamento non sia disturbato, ovvero è necessario trovare tale j (1 ≤ j ≤ k -1) tale che a [j] ≤ a [ K]< a. Затем вставить элемент а [k] на найденное место.

Ad ogni passaggio, la parte ordinata dell'array cresce. L'ordinamento completo richiede n-1 passaggi.

Consideriamo questo processo con un esempio. Supponi di voler ordinare un array di 10 elementi in ordine crescente con il metodo di inclusione diretta

1 - esimo passo

13 6 8 11 3 1 5 9 15 7 Considera una parte di un array di un elemento

ment (13). Devi inserire un secondo in esso

elemento di array (6) in modo che il file ordinato

ness è stata preservata. Dal 6< 13, вставляем

6 al primo posto. Parte ordinata

l'array contiene due elementi (6 13).


3 - esimo passo

6 8 13 11 3 1 5 9 15 7 L'elemento successivo è 11. È scritto nella parte ordinata della matrice al terzo posto, poiché 11\u003e 8, ma 11< 13.


5 - passo

3 6 8 11 13 1 5 9 15 7 Per lo stesso motivo scriviamo 1 al primo


6 - passo

1 3 6 8 11 13 5 9 15 7 Da 5\u003e 3, ma 5< 6 то место 5 в упоря-

La parte bambino è la terza.


7 - passo

1 3 5 6 8 11 13 9 15 7 Il posto del numero 9 è il sesto.


8 - passo

1 3 5 6 8 9 11 13 15 7 Determina il posto per il penultimo

Elemento 15. Si scopre che questo elemento

il poliziotto dell'array è già a posto.

9 - passo

1 3 5 6 8 9 11 13 15 7 Resta da trovare un posto adatto per

L'ultimo elemento (7).

1 3 5 6 7 8 9 11 13 15 L'array viene ordinato completamente.

Ora possiamo descrivere brevemente un frammento dell'algoritmo di ordinamento con il metodo di inclusione diretta:



Per k: \u003d 2 To n Do

(poiché iniziamo l'ordinamento trovando un posto adatto per a, i cambia da 2 a n)

"Inserisci x in un punto adatto in a, ..., a [k]"

Resta da rispondere alla domanda su come trovare un posto adatto per l'elemento x. Facciamo quanto segue: esamineremo gli elementi che si trovano a sinistra di x (cioè quelli che sono già ordinati), spostandoci all'inizio dell'array. È necessario scansionare gli elementi a [j], j varia da k-1 a 1. Tale scansione deve terminare quando è soddisfatta una delle seguenti condizioni:

· Trovato elemento a [j]< x, что говорит о необходимости вставки x между a и a[j].

· Viene raggiunta l'estremità sinistra della parte ordinata dell'array, quindi è necessario inserire x in primo luogo.

Finché una di queste condizioni non viene soddisfatta, sposteremo gli elementi visualizzati nella prima posizione a destra, in conseguenza della quale lo spazio nella parte ordinata verrà liberato per x.

Programma di ordinamento diretto:

programma n3; (Ordine decrescente)

digitare ar \u003d matrice di numeri interi;

procedura sorting3 (var a: ar);

var i, j, x, k: intero;

per k: \u003d 2 an do

x: \u003d a [k]; j: \u003d k-1;

mentre (j\u003e 0) e (x\u003e \u003d a [j]) fanno

writeln ("Inserisci l'array originale:");

for i: \u003d 1 an do read (a [i]);

writeln ("Matrice ordinata:");

per i: \u003d 1 an scrivi (a [i], "");

Definizioni e classificazione necessarie degli smistamenti.

Ordinamento. Definizioni e classificazione necessarie degli smistamenti. Tipi di inclusione e selezione diretti. La loro efficacia

Ordinamento È la disposizione dei dati in memoria in una forma regolare secondo le loro chiavi. Quindi, durante l'elaborazione dei dati, è importante conoscere il campo informativo dei dati e il loro posizionamento nella macchina. Pertanto, distinguere interno (smistando in memoria ad accesso casuale) e smistamento esterno (ordinando in memoria esterna). Regolarità la disposizione degli elementi è l'aumento (diminuzione) del valore della chiave dall'inizio alla fine dell'array.

Se i record da ordinare occupano una grande quantità di memoria, spostarli è costoso. Per ridurli, usa metodo di ordinamento della tabella degli indirizzi... Questo metodo è utilizzato in tabella degli indirizzi chiave... I puntatori vengono riorganizzati, ad es. La matrice stessa non si muove. Durante l'ordinamento, potrebbero esserci chiavi identiche. In questo caso, è preferibile disporre le chiavi identiche dopo l'ordinamento nello stesso ordine del file di origine. Questo principio è usato per smistamento sostenibile.

L'efficienza di ordinamento può essere visualizzata in base a diversi criteri:

1) tempo dedicato allo smistamento;

2) la quantità di RAM richiesta per l'ordinamento;

3) tempo impiegato dal programmatore per scrivere il programma.

Il tempo impiegato per l'ordinamento è proporzionale al numero di confronti nell'ordinamento e al numero di elementi spostati.

Si ritiene che l'ordine del numero di confronto durante l'ordinamento possa essere compreso nell'intervallo da o (nlogn) prima o (n 2)dove sopra) - un caso ideale e irraggiungibile.

I metodi di ordinamento possono essere classificati in questo modo:

1) metodi rigorosi (diretti) (la loro efficacia è quasi la stessa):

· inclusione diretta;

· selezione diretta;

· scambio diretto;

2) tecniche migliorate.

Nella vita, il principio di questo ordinamento è presente quando si gioca a solitari, si pulisce un appartamento, quando è necessario disporre un mucchio di cose miste nell'ordine corretto, ecc. All'ordinamento dei dati è stato applicato un metodo di ordinamento molto naturale.

Gli elementi sono mentalmente divisi in una sequenza già pronta un 1, ..., un i-1 e la sequenza originale. Nella sequenza finale, gli elementi sono disposti in un determinato ordine (discendente o ascendente). E la sequenza originale contiene gli elementi che devono essere ordinati. Ad ogni passaggio, gli elementi della sequenza originale vengono ridotti di uno e quello finito viene aumentato di uno. Ciò è dovuto al fatto che dalla sequenza originale viene estratta io-elemento e trasferito alla sequenza finita, mentre viene inserito al posto giusto tra gli elementi della sequenza finita.

Considera un esempio di ordinamento con il metodo di inclusione diretta sulla sequenza di elementi: 10, 3, 11, 8, 2, 15, 44, 9 (Tabella 11.1). È necessario ordinarlo in ordine crescente.

All'inizio, la sequenza finita non ha elementi. Nella prima fase, il primo elemento della sequenza originale, che è 10, diventa il primo elemento della sequenza finita. Quindi il secondo passaggio: l'elemento 3 della sequenza originale viene inserito in quella finita. Va così. Se l'elemento è maggiore di 10, rimane al suo posto e, se è inferiore, 10 viene spostato di uno a destra e l'elemento viene messo al suo posto. Dal 3<10, то готовая последовательность теперь будет иметь вид: 3, 10, а исходная – 11, 8, 2, 15, 44, 9. Далее на третьем шаге из исходной последовательности выбирается 11 и помещается в готовую последовательность. Сначала 11 сравнивается с 10, и так как 11>10, quindi 11 rimane al suo posto. La sequenza originale ora è: 8, 2, 15, 44, 9. I passaggi successivi vengono eseguiti allo stesso modo.

Tabella 11.1

Come funziona l'ordinamento diretto

Il numero di passaggi in questo ordinamento (Tabella 11.1) è uguale al numero di elementi nella sequenza ordinata, ad es. 8 gradini \u003d 8 elementi.

Ci sono due modi per implementare questo metodo: è senza una barriera (Figura 11.1) e con una barriera (Figura 11.2).

L'ordinamento è la disposizione dei dati in memoria in una forma regolare in base al parametro selezionato. La regolarità è considerata come un aumento (diminuzione) del valore del parametro dall'inizio alla fine della matrice di dati.

Durante l'elaborazione dei dati, è importante conoscere il campo informativo dei dati e il loro posizionamento nella macchina.

Distinguere tra ordinamento interno ed esterno:

Ordinamento interno - ordinamento nella RAM;

Ordinamento esterno: ordina nella memoria esterna.

Se i record da ordinare occupano una grande quantità di memoria, spostarli è costoso. Per ridurli, lo smistamento viene effettuato in tabella degli indirizzi chiave, ovvero, i puntatori vengono riorganizzati, ma la matrice stessa non viene spostata. Esso - metodo di ordinamento della tabella degli indirizzi.

Durante l'ordinamento, si possono incontrare le stesse chiavi. In questo caso, dopo l'ordinamento, è opportuno disporre le stesse chiavi nello stesso ordine del file sorgente.Esso - smistamento sostenibile.

Considereremo solo i tipi che non utilizzano RAM aggiuntiva. Tali smistamenti sono chiamati "nello stesso posto".

L'efficienza di ordinamento può essere considerata in base a diversi criteri:

Tempo impiegato per lo smistamento;

La quantità di RAM richiesta per l'ordinamento;

Il tempo impiegato dal programmatore per scrivere il programma.

Evidenziamo il primo criterio. Si può considerare l'equivalente del tempo speso per lo smistamento numero di confronti e numero di movimentidurante l'ordinamento.

L'ordine del numero di confronti e mosse durante l'ordinamento si trova all'interno

Da O (n log n) a O (n 2);

O (n) è un caso ideale e irraggiungibile.

Si distinguono i seguenti metodi di ordinamento:

Metodi rigorosi (diretti);

Metodi migliorati.

Metodi rigorosi:

Metodo di connessione diretta;

Metodo di selezione diretta;

Metodo di scambio diretto.

L'efficacia dei metodi rigorosi è quasi la stessa.

Ordina per metodo di inclusione diretta

Gli elementi sono mentalmente divisi in una sequenza già pronta un 1, ..., un i-1 e la sequenza originale.

Ad ogni passaggio, partendo da i \u003d 2 e aumentando i ogni volta di uno, viene estratta la sequenza originale i-esimo elemento e trasferito alla sequenza finita, mentre viene inserito nel luogo desiderato.

L'essenza dell'algoritmo è la seguente:

per i \u003d 2 fino a n

X \u003d a (i)

Trova un posto tra a (1) ... a (i) per includere x

prossimo i


Esistono due algoritmi di ordinamento per inclusione diretta. Il primo è senza barriera

Algoritmo di ordinamento dell'inclusione diretta senza barriere

per i \u003d 2 fino a n

X \u003d a (i)

Per j \u003d i - 1 fino a 1

Se x< a(j)

Allora a (j + 1) \u003d a (j)

Altrimenti vai a L

Finisci se

Avanti j

L: a (j + 1) \u003d x

prossimo i

ritorno

Lo svantaggio dell'algoritmo di cui sopra è la violazione della tecnologia programmazione strutturata, in cui non è desiderabile utilizzare salti incondizionati. Se il ciclo interno è organizzato come while loop , quindi è necessario impostare una "barriera", senza la quale, con valori negativi delle chiavi, si verifica la perdita di significatività e il "congelamento" del computer.

Algoritmo di ordinamento per inclusione diretta con barriera

per i \u003d 2 fino a n

X \u003d a (i)

A (0) \u003d x (a (0) - barriera)

J \u003d i - 1

Mentre x< a(j) do

A (j +1) \u003d a (j)

J \u003d j - 1

Endwhile

A (j +1) \u003d x

prossimo i

ritorno

Efficienza dell'algoritmo di inclusione diretta

Il numero di confronti chiave Ci all'i-esimo screening è al massimo i-1, almeno 1; se assumiamo che tutte le permutazioni di N chiavi siano ugualmente probabili, allora il numero medio di confronti \u003d i / 2. Il numero di trasferimenti Mi \u003d Ci + 3 (inclusa la barriera). I punteggi minimi si trovano nel caso di una sequenza iniziale di elementi già ordinata, mentre i punteggi peggiori si riscontrano quando sono inizialmente disposti in ordine inverso. In un certo senso, l'ordinamento per inclusione dimostra un comportamento veramente naturale. È chiaro che l'algoritmo di cui sopra descrive il processo di ordinamento stabile: l'ordine degli elementi con chiavi uguali rimane invariato.

Il numero di confronti nel caso peggiore, quando l'array è ordinato in modo opposto, C max \u003d n (n - 1) / 2, cioè - O (n 2). Il numero di permutazioni M max \u003d C max + 3 (n-1), i.e. - O (n 2). Se l'array è già ordinato, il numero di confronti e permutazioni è minimo: C min \u003d n-1; M min \u003d \u003d 3 (n-1).

Ordinamento tramite scambio diretto (Bubble sort)

NEL questa sezione viene descritto un metodo in cui lo scambio di luoghi di due elementi è una caratteristica del processo. L'algoritmo di scambio diretto descritto di seguito si basa sul confronto e sul cambio di posizione di una coppia di elementi adiacenti e sul continuare questo processo finché tutti gli elementi non sono in ordine.

Si itera attraverso l'array, spostando ogni volta l'elemento più piccolo della sequenza rimanente all'estremità sinistra dell'array. Se consideriamo gli array come strutture verticali anziché orizzontali, gli elementi possono essere interpretati come bolle in una vasca d'acqua, con il peso di ciascuno corrispondente alla sua chiave. In questo caso, ad ogni passaggio, una bolla, per così dire, sale ad un livello corrispondente al suo peso (vedere l'illustrazione nella figura sotto).

C min \u003d n - 1, ordine O (n),

e non ci sono affatto movimenti

Un'analisi comparativa dei metodi diretti di ordinamento mostra che lo scambio "smistamento" nella forma classica è un incrocio tra l'ordinamento con l'aiuto delle inclusioni e con l'aiuto della selezione. Se vengono apportati i miglioramenti di cui sopra, allora per array sufficientemente ordinati bubble sort ha anche un vantaggio.

Questa tecnica è comunemente nota come Bubble Sort.


Algoritmo del metodo di scambio diretto

per j \u003d da n a i passo -1

se a (j)< a(j - 1) then

Nel nostro caso, abbiamo ottenuto un passaggio "inattivo". Per non guardare ancora una volta tra gli elementi, e quindi fare confronti, dedicando tempo a questo, puoi inserire la casella di controllo flche rimane nel significato falsose non viene effettuato alcun cambio durante il passaggio successivo. Nell'algoritmo seguente, le aggiunte sono contrassegnate in grassetto.

fl \u003d true

se fl \u003d false, restituisce

fl \u003d false

per j \u003d da n a i passo -1

se a (j)< a(j - 1) then

fl \u003d true

Un miglioramento del metodo a bolle è lo shaker sort, in cui dopo ogni passaggio la direzione viene invertita nel circuito interno.

Efficienza dell'algoritmo di smistamento dello scambio diretto

Il numero di confronti C max \u003d n (n-1) / 2, ordine O (n 2).

Il numero di spostamenti M max \u003d 3C max \u003d 3n (n-1) / 2, ordine O (n 2).

Se l'array è già ordinato e viene applicato l'algoritmo con un flag, è sufficiente un solo passaggio e quindi otteniamo il numero minimo di confronti

Metodo: un metodo per misurare indirettamente il contenuto di umidità di sostanze basato sulla dipendenza della costante dielettrica di queste sostanze dal loro contenuto di umidità. Fonte: RMG 75 2004: Sistema statale garantendo un unico ...

SANGUE - SANGUE, un liquido che riempie le arterie, le vene e i capillari del corpo ed è costituito da un trasparente giallastro pallido. i colori del plasma e degli elementi formati in esso sospesi: globuli rossi, o eritrociti, bianchi, o leucociti e placche di sangue, o ... Grande enciclopedia medica

La proprietà - (Immobiliare) Definizione di immobile, tipi di immobile, affitto e vendita di immobili Informazioni sul concetto di immobile, tipi di immobili, affitto e vendita di immobili, tassazione e assicurazioni Il contenuto è un tipo di proprietà, ... ... Enciclopedia degli investitori

Questo termine ha altri significati, vedi C. Vedi anche: C (linguaggio di programmazione) C ++ Semantica: multiparadigma: orientato agli oggetti, generico, procedurale, metaprogrammazione Tipo di esecuzione: compilato Introdotto in ... Wikipedia

VALUTAZIONE DEL VALORE DELLE ATTIVITÀ IMMATERIALI - (stima delle attività immateriali in inglese) - determinazione del valore dell'ambito dei diritti dell'impresa su un determinato gruppo di oggetti che non hanno contenuto materiale materiale e portano reddito all'impresa durante il periodo specificato dal nazionale ... ... Dizionario enciclopedico finanziario e creditizio

SCUOLA educazione generale - uch. educare. istituzione, l'elemento di base è educato. sistemi. In questa veste Sh. Il soggetto della ricerca decomp. discipline: pedagogia, storia, demografia, sociologia e altre Solo in pedagogia i problemi di Sh. sono completamente indipendenti. un posto. Conoscenza ... ... Enciclopedia pedagogica russa

tempo - 3.3.4 tempo tE (tempo tE): il tempo di riscaldamento per la corrente alternata di spunto iniziale IA dell'avvolgimento rotorico o statorico dalla temperatura raggiunta in funzionamento nominale alla temperatura ammissibile alla massima temperatura ambiente. Fonte … Libro di riferimento del dizionario dei termini della documentazione normativa e tecnica

GOST R IEC 60204-1-2007: sicurezza dei macchinari. Equipaggiamento elettrico di macchine e meccanismi. Parte 1. Requisiti generali - Terminologia GOST R IEC 60204 1 2007: Sicurezza del macchinario. Equipaggiamento elettrico di macchine e meccanismi. Parte 1. Documento originale Requisiti generali: sistemi di alimentazione TN Il metodo di prova 1 secondo 18.2.2 può essere eseguito per ogni circuito ... ... Libro di riferimento del dizionario dei termini della documentazione normativa e tecnica

auto - 3.3.1 dispositivo di campionamento automatico utilizzato per estrarre un campione rappresentativo di un liquido che scorre attraverso una tubazione Nota Un autocampionatore di solito è costituito da una sonda (astina), un estrattore ... ... Libro di riferimento del dizionario dei termini della documentazione normativa e tecnica

voltaggio - 3.10 stress: il rapporto tra la forza di trazione e l'area della sezione trasversale del collegamento alle sue dimensioni nominali

LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam