-
- // 两个有序数组归并
- void Merge(int *array,int leftStart,int leftEnd,int rightStart,int rightEnd,int size)
- {
- int l=leftStart;
- int r=rightStart;
-
- // 定义一个临时的数组,大小为size
- int tempA[size];
- // 临时数组的位置标记
- int tp=0;
- // 开始合并
- while(l<=leftEnd && r<= rightEnd)
- {
- // 如果array【l】比array【r】小
- if(array[l]<array[r])
- {
- // 就把array的值存入tempA【tp】
- tempA[tp]=array[l];
- // 指向下一个元素
- tp++;
- l++;
- }else
- {
- // 否则就把array【r】的元素给tempA【tp】
- tempA[tp]=array[r];
- // 指向下一个元素
- tp++;
- r++;
- }
- }
- // 如果l没到末尾
- while(l<=leftEnd)
- {
- // 就把剩下的元素给到tempA数组
- tempA[tp]=array[l];
- tp++;
- l++;
- }
- // 如果r没到末尾
- while(r<=rightEnd)
- {
- // 就把剩下的给到tempA数组
- tempA[tp]=array[r];
- tp++;
- r++;
- }
-
-
- // 把tempA数组中的元素放到array里面
-
- for(l=leftStart,tp=0;l<=rightEnd;l++,tp++)
- {
- array[l]=tempA[tp];
- }
-
-
- }
-