一个简单的循环排序

一个简单的循环排序,自己记录一下,怕自己忘记,有初学的可以看下,以后会重写吧。。。。

NSMutableArray *array = [NSMutableArray arrayWithObjects:@11,@1,@23,@13,@45,@24,@16,@19,@54,@27,@6, nil];
    //do..while循环是否继续执行判断条件
    BOOL finish = NO;
    //记录需要循环下标的最大值
    NSInteger maxIndex = array.count;

    do {
        //当完成一次排序后,最大值就会被确定,并移至最后,所以再次循环可以不用和最后一位比较,即最大下标减去1
        maxIndex -= 1;
        //每次进来都要把判断条件取反,不然会一直循环下去
        finish = NO;
        //去第一个数和下一位数进行比较,当条件成立,就将两个数位置对调
        for (int i = 0; i < maxIndex; i++) {
            NSInteger leftNum = [array[i] integerValue];
            NSInteger rightNum = [array[i+1] integerValue];
        
            if (leftNum > rightNum) {
                array[i+1] = @(leftNum);
                array[i] = @(rightNum);
                finish = YES;
            
            }
        }
    } while (finish);

你可能感兴趣的:(一个简单的循环排序)