Advertisement
Denny707

Untitled

Jun 22nd, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.42 KB | None | 0 0
  1. function merge_sort(input, inizio, fine): void
  2.     var inizio,fine,medio: integer
  3.     var input: array(1..fine) of integer
  4.     begin
  5.     if(inizio<fine) then
  6.         medio := (inizio + fine) / 2
  7.         merge_sort(input, inizio, medio)
  8.         merge_sort(input, medio + 1, fine)
  9.         merge(input, inizio, fine)
  10.     endif
  11. end
  12.  
  13. function merge(input, inizio, fine): void
  14.     var inizio, fine, medio: integer
  15.     var input: array(1..fine) of integer
  16.     var i1,i2,i3: integer
  17.     var temp: array(1..fine-inizio+1) of integer
  18.     begin
  19.  
  20.     medio := ((inizio+fine) / 2)
  21.     i1 := 0             //indice array temp
  22.     i2 := inizio        //indice sottoarray sx
  23.     i3 := medio + 1     //indice sottoarray dx
  24.    
  25.     while ( i2 <= medio .AND. i3 <= fine )do
  26.         if ( input[i2] < input[i3] ) then
  27.             temp[i1] = input[i2]
  28.             i1:=i1+1
  29.             i2:=i2+1
  30.         else
  31.             temp[i1] = input[i3]
  32.             i1:=i1+1
  33.             i3:=i3+1
  34.         endif
  35.     end while
  36.     // Merge degli elementi rimasti a sinistra
  37.     while ( i2 <= medio ) do
  38.         temp[i1] = input[i2]
  39.         i1:=i1+1
  40.         i2:=i2+1
  41.     end while
  42.    
  43.     // Merge degli elementi rimasti a destra
  44.     while ( i3 <= fine )do
  45.         temp[i1] = input[i3]
  46.         i1:=i1+1
  47.         i3:=i3+1
  48.     end while
  49.  
  50.      // Sposto tutti gli elementi dall'array temporaneo all'array originale
  51.     i:=inizio
  52.     for i to fine do
  53.         input[i] := temp[i-inizio]
  54.     end for
  55. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement