26 Short_t
i =0, j, nl_curr=0, nr_curr=0;
28 while( nl > 0 && nr >0){
29 if( left[nl_curr] <= right[nr_curr]){
30 result[
i] = left[nl_curr];
31 ind[
i] = ind_left[nl_curr];
35 result[
i] = right [nr_curr];
36 ind[
i] = ind_right [nr_curr];
45 result[i+j]= right[nr_curr+j];
46 ind[i+j]= ind_right[nr_curr+j];
50 result[i+j]= left[nl_curr+j];
51 ind[i+j]= ind_left[nl_curr+j];
79 Short_t
i =0, j, nl_curr=0, nr_curr=0;
81 while( nl > 0 && nr >0){
82 if( left[nl_curr] <= right[nr_curr]){
83 result[
i] = left[nl_curr];
84 ind[
i] = ind_left[nl_curr];
88 result[
i] = right [nr_curr];
89 ind[
i] = ind_right [nr_curr];
98 result[i+j]= right[nr_curr+j];
99 ind[i+j]= ind_right[nr_curr+j];
103 result[i+j]= left[nl_curr+j];
104 ind[i+j]= ind_left[nl_curr+j];
130 Short_t
i =0, j, nl_curr=0, nr_curr=0;
132 while( nl > 0 && nr >0){
133 if( left[nl_curr] <= right[nr_curr]){
134 result[
i] = left[nl_curr];
135 ind[
i] = ind_left[nl_curr];
139 result[
i] = right [nr_curr];
140 ind[
i] = ind_right [nr_curr];
149 result[i+j]= right[nr_curr+j];
150 ind[i+j]= ind_right[nr_curr+j];
154 result[i+j]= left[nl_curr+j];
155 ind[i+j]= ind_left[nl_curr+j];
173 ind_left[n_ele], ind_right[n_ele];
177 if( n_ele <= 1)
return;
180 for(i=0; i<middle; i++){
184 for(i=middle; i<n_ele; i++){
185 right[i-middle]=array[
i];
186 ind_right[i-middle]= ind[
i];
189 Merge_Sort( middle, left, ind_left);
190 Merge_Sort(n_ele-middle, right, ind_right);
192 if( left[middle-1] > right[0]) {
193 Merge(middle, left,ind_left, n_ele-middle, right, ind_right, array, ind);
196 for(i=0; i<middle; i++){
201 for(i=middle; i<n_ele; i++){
202 array[
i]=right[i-middle];
203 ind[
i]=ind_right[i-middle];
227 ind_left[n_ele], ind_right[n_ele];
231 if( n_ele <= 1)
return;
234 for(i=0; i<middle; i++){
238 for(i=middle; i<n_ele; i++){
239 right[i-middle]=array[
i];
240 ind_right[i-middle]= ind[
i];
243 Merge_Sort2( middle, left, ind_left);
244 Merge_Sort2(n_ele-middle, right, ind_right);
246 if( left[middle-1] > right[0]) {
247 Merge2(middle, left,ind_left, n_ele-middle, right, ind_right, array, ind);
250 for(i=0; i<middle; i++){
255 for(i=middle; i<n_ele; i++){
256 array[
i]=right[i-middle];
257 ind[
i]=ind_right[i-middle];
281 ind_left[n_ele], ind_right[n_ele];
283 Int_t left[n_ele], right[n_ele];
285 if( n_ele <= 1)
return;
288 for(i=0; i<middle; i++){
292 for(i=middle; i<n_ele; i++){
293 right[i-middle]=array[
i];
294 ind_right[i-middle]= ind[
i];
297 Merge_Sort3( middle, left, ind_left);
298 Merge_Sort3(n_ele-middle, right, ind_right);
300 if( left[middle-1] > right[0]) {
301 Merge3(middle, left,ind_left, n_ele-middle, right, ind_right, array, ind);
304 for(i=0; i<middle; i++){
309 for(i=middle; i<n_ele; i++){
310 array[
i]=right[i-middle];
311 ind[
i]=ind_right[i-middle];
void Merge(Short_t nl, Double_t *left, Int_t *ind_left, Short_t nr, Double_t *right, Int_t *ind_right, Double_t *result, Int_t *ind)
void Merge_Sort3(Short_t n_ele, Int_t *array, Short_t *ind)
void Merge3(Short_t nl, Int_t *left, Short_t *ind_left, Short_t nr, Int_t *right, Short_t *ind_right, Int_t *result, Short_t *ind)
void Merge_Sort2(Short_t n_ele, Double_t *array, Short_t *ind)
void Merge_Sort(Short_t n_ele, Double_t *array, Int_t *ind)
void Merge2(Short_t nl, Double_t *left, Short_t *ind_left, Short_t nr, Double_t *right, Short_t *ind_right, Double_t *result, Short_t *ind)