Lir

Сортировка слиянием

Lir
Sep 7th, 2012
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         private var array:Array = [0,23,45,22,3,5,1,6,126,89,12,1];
  2.         mergeSort(array, 0, array.length - 1);
  3.  
  4.  
  5.         private function merge(array:Array, p:int, q:int, r:int):void{
  6.             trace("start ---------------------------------------------------------- ");
  7.             trace("basic array = " + array.toString());
  8.             //First sorted array
  9.             var array1:Array = [];
  10.            
  11.             //Second sorted array
  12.             var array2:Array = [];
  13.            
  14.             //fill first array
  15.             for (var i:int = 0; i <= q; i++){
  16.                 array1[i] = array[i + p];
  17.             }
  18.            
  19.             //fill second array
  20.             for (var j:int = 0; j < r - q; j++){
  21.                 array2[j] = array[j + q + 1];
  22.             }
  23.            
  24.             //Put the marker to the end of the arrays
  25.             array1[array1.length] = Infinity;
  26.             array2[array2.length] = Infinity;
  27.            
  28.             //Indexes for arrays
  29.             var i:int = 0;
  30.             var j:int = 0;
  31.            
  32.             //Merge arrays
  33.             for (var k:int = p; k <= r; k++){
  34.                 if (array1[i] <= array2[j]){
  35.                     array[k] = array1[i];
  36.                     i++;
  37.                 } else {
  38.                     array[k] = array2[j];
  39.                     j++;
  40.                 }
  41.             }
  42.            
  43.             trace("first array = " + array1.toString());
  44.             trace("second array = " + array2.toString());
  45.             trace("final array = " + array.toString());
  46.             trace("end ------------------------------------------------------------");
  47.         }
  48.        
  49.         //Recursivelt sort array
  50.         private function mergeSort(array:Array, p:int, r:int):void{
  51.             if (p < r){
  52.                 var q:int = Math.floor((p + r) / 2);
  53.                 mergeSort(array, p , q);
  54.                 mergeSort(array, q + 1 , r);
  55.                 merge(array, p, q, r);
  56.             }
  57.         }
Advertisement
Add Comment
Please, Sign In to add comment