object 版归并排序

-(void)main:(NSMutableArray*)srcArray{
    NSMutableArray* tempArray=[[NSMutableArray alloc] init];
    [self main:srcArray tempArray:tempArray left:0 right:(int)([srcArray count]-1)];
}

-(void)main:(NSMutableArray*)srcArray tempArray:(NSMutableArray*)tempArray left:(int)left right:(int)right{
    if (left<right) {
        int middle=(left+right)/2;
        [self main:srcArray tempArray:tempArray left:left right:middle];
        [self main:srcArray tempArray:tempArray left:middle+1 right:right];
        [self merger:tempArray srcArray:srcArray leftStart:left leftEnd:middle rightStart:middle+1 rightEnd:right];
    }
}

-(void)merger:(NSMutableArray*) tempArray srcArray:(NSMutableArray*)srcArray leftStart:(int)leftStart leftEnd:(int)leftEnd rightStart:(int)rightStart rightEnd:(int)rightEnd{
    int index=leftStart;
    int srcLeftStart=leftStart;
    while (leftStart<=leftEnd&&rightStart<=rightEnd) {
        if ([srcArray[leftStart] intValue]<[srcArray[rightStart] intValue]) {
            tempArray[index++]=srcArray[leftStart++];
        }else{
            tempArray[index++]=srcArray[rightStart++];
        }
    }
    
    while (leftStart<=leftEnd) {
        tempArray[index++]=srcArray[leftStart++];
    }
    
    while (rightStart<=rightEnd) {
        tempArray[index++]=srcArray[rightStart++];
    }
    
    for (int i=srcLeftStart; i<=rightEnd; i++) {
        srcArray[i]=tempArray[i];
    }
}

 

posted @ 2014-04-17 14:24  learnWindowsPhone  阅读(176)  评论(0编辑  收藏  举报