int main(){

int bigArray[10]={1,-1,4,-1,-1,6,-1,8,-1,9};
int smallArray[5]={2,5,7,10,11};

printf("\nPress enter to compress array to right : \n");
getch();

AlignRight(bigArray,10);

printf("\nPress enter to see modified array : \n");
getch();

int i;

for(i=0;i<10;i++){
printf("%d  ",bigArray[i]);
}

MergeArray(bigArray,smallArray,10,5);

printf("\nPress enter to see merged array : \n");
getch();

for(i=0;i<10;i++){
printf("%d  ",bigArray[i]);
}






return 0;
}
Example #2
0
void AllSort::MergeIter(int first, int last, int temp[]) {
  if (first < last) {
    int mid = (last + first) / 2;
    MergeIter(first, mid, temp);
    MergeIter(mid + 1, last, temp);
    MergeArray(first, mid, last, temp);
  }
}
Example #3
0
void 
MergeSortArray(int *a, int begin, int end)
{
    if ((end - begin) <= 1)
        return;
    int mid = (begin + end) / 2;
    MergeSortArray(a, begin, mid);
    MergeSortArray(a, mid, end);
    MergeArray(a, begin, mid, end);
}
Example #4
0
void MergeSort(int *a,int begin,int end,int *temp)
{
    if(begin < end)
    {

        int mid = (begin + end) / 2;
        /**
         *  分别递归进行排序,也称为2-路归并;
         */
        MergeSort(a,begin,mid,temp);   //左边有序
        MergeSort(a,mid + 1,end,temp);   //右边有序
        MergeArray(a,begin,mid,end,temp); //将左右两边有序的数组合并
    }
}