Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    23

    quicksort array ordinato

    salve a tutti ho un problema nel capire come funge il quicksort nel caso di array ordinato,
    io ho un'array fatto così: 1 3 7 8 11 15 17 e prendo come pivot 1; ora il codice è questo:
    codice:
    if(a[i]<x) i++; 
    else {
            scambia a[i] con a[j];
            j--;
    }
    quello che nn riesco a capire è ma dopo che verifico che 3 è > del pivot scambio 3 con 17 ottendendo l'array 1 17 7 8 11 15 o semplicemente 3 viene messo al fondo e gli altri elementi scalano verso il pivot cioè così: 1 7 8 11 15 17.

    spero qualcuno possa aiutarmi

  2. #2
    Forse non ti è chiaro il funzionamento di Quicksort.
    In pseudocodice da wikipedia:

    codice:
    Procedure Quicksort(A)
    Input A, vettore a1, a2, a3 .. an
      begin
        if n ≤ 1 then return A
        else
          begin 
            scegli un elemento pivot Ak
            calcola il vettore A1 dagli elementi ai di A tali che i ≠ K e ai ≤ ak
            calcola il vettore A2 dagli elementi aj di A tali che j ≠ K e aj > ak
            A1 ← Quicksort(A1)
            A2 ← Quicksort(A2)
            return A1 · (ak) · A2
         end
    Nel tuo caso, se prendi 1 come pivot i 2 array che verranno creati sono

    A1 <- []
    A2 <- [3,7,8,11,15,17]

    viene quindi richiamato l'algoritmo su A1 e A2 in modo ricorsivo.

    La chiamata su A1 terminerà subito, il risultato sarà quindi 1 seguito dal risultato della chiamata su A2
    Powered by MacOSX Lion

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.