-(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];
}
}