Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: main.c
- * Author: Gerardo Cicalese
- *
- * Created on 16 settembre 2019, 15.48
- */
- #include <stdio.h>
- #include <stdlib.h>
- void print_vex(int * vex, int len){
- if(len<1)
- return;
- printf("%d ", *vex);
- print_vex(vex+1, len-1);
- }
- void copy_vex(int * a, int * b, int len){
- if(len==0)
- return;
- *b=*a;
- copy_vex(a+1, b+1, len-1);
- }
- void merge(int * a, int lena, int * b, int lenb, int * temp){
- if(lena>0&&lenb>0)
- if(*a<*b){
- *temp=*a;
- merge(a+1, lena-1, b, lenb, temp+1);
- }
- else{
- *temp=*b;
- merge(a, lena, b+1, lenb-1, temp+1);
- }
- else{
- if(lena==0&&lenb>0){
- *temp=*b;
- merge(a, lena, b+1, lenb-1, temp+1);
- }
- else if(lena>0&&lenb==0){
- *temp=*a;
- merge(a+1, lena-1, b, lenb, temp+1);
- }
- }
- }
- void merge_sort(int * array, int len, int * temp){
- if( len < 2 )
- return;
- int pivot=len/2;
- merge_sort(array, pivot, temp);
- merge_sort(array+pivot, len-pivot, temp);
- merge(array, pivot, array+pivot, len-pivot, temp);
- copy_vex(temp, array, len);
- }
- int main(void){
- int array[10]={23, 62, 15, 97, 35, 78, 34, 89, 13, 57}, temp[10];
- merge_sort(array, 10, temp);
- print_vex(array, 10);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement