快速排序(Object-c)

  1. +(NSMutableArray *)kuaisuMethodTest:(NSMutableArray *)dataArray low:(int )lowIndex high:(int)highIndex{    

  2. //    NSMutableArray *data=[[NSMutableArray alloc] initWithObjects:@"5",@"4",@"2",@"8",@"1",@"7",@"9",@"6",nil];

  3.     if (lowIndex<highIndex) {

  4.         int i=lowIndex,j=highIndex;

            int vot=[[dataArray objectAtIndex:i] intValue];

            while (i!=j) {

                while (i<j && vot<=[[dataArray objectAtIndex:j] intValue]) j--;

                NSLog(@"j=======%d",j);

  5.             if (i<j) {

  6.                 [dataArray replaceObjectAtIndex:i withObject:[dataArray objectAtIndex:j]];

                    NSLog(@"i=======[dataArray objectAtIndex:%d]=====%@",i,[dataArray objectAtIndex:i]);

  7.                 i++;

  8.             }

                while (i<j && [[dataArray objectAtIndex:i] intValue]<vot) i++;

                if (i<j) {

                    [dataArray replaceObjectAtIndex:j withObject:[dataArrayobjectAtIndex:i]];

  9.                 NSLog(@"j======[dataArray objectAtIndex:%d]=====%@",j,[dataArray objectAtIndex:j]);

  10.                 j--;

  11.             }

  12.         }

  13.         [dataArray replaceObjectAtIndex:i withObject:[NSString stringWithFormat:@"%d",vot]];

  14.         NSLog(@"low:(%d)....high:(%d)....vot:(%d)...%@",lowIndex,highIndex,vot,dataArray);

  15.         [AppDelegate kuaisuMethodTest:dataArray low:lowIndex high:j-1];//前端子序列再排序

  16.         [AppDelegate kuaisuMethodTest:dataArray low:i+1 high:highIndex];//后端子序列再排序

  17.     }

  18.     return dataArray;

  19. }

posted @ 2012-08-13 18:28  Mr.Songz  阅读(215)  评论(0编辑  收藏  举报