美文网首页
oc实现选择排序

oc实现选择排序

作者: _宇世无争_ | 来源:发表于2016-12-02 23:02 被阅读40次

    话不多说,选择排序就是通过遍历数组找出每次遍历数组的最小元素的下标,然后将其按顺序从第一位依次排列
    比如一个原始数列:4,3,2,1
    (找到最小的元素的下标3<值为1>,并将其下标对应的值放到第一位)
    第一轮循环后:1,3,2,4
    (找到最小的元素的下标2<值为2>,并将其下标对应的值放到第二位)依次类推
    第二轮循环后:1,2,3,4
    第三轮循环后:1,2,3,4
    第四轮循环后:1,2,3,4

    - (void)selectSort
    {
         //self.array = @[@2,@4,@3,@1];
         NSMutableArray *mutableArray = [self.array mutableCopy];//oc数组中不能存储基本数据类型,所以快速赋值完成后,系统默认数组元素为NSNumber类型
        if (mutableArray == nil || [mutableArray count] == 0)
        {
            return;
        }
        for (int i = 0; i < [mutableArray count]; i++)
        {
            NSInteger minIdx = i;//默认最小值的索引为i
            for (int j = i+1; j < [mutableArray count]; j++)//通过循环寻找当前数组中最小值的索引值
            {
                if (NSOrderedAscending == [mutableArray[j] compare:mutableArray[minIdx]])//NSNumber类判断大小方法,这句话的意思是当mutableArray[j] <mutableArray[minIdx]时
                {
                    minIdx = j;//更新数组中最小值的索引值
                }
            }
            [mutableArray exchangeObjectAtIndex:i withObjectAtIndex:minIdx];//将每次循环结束后找到的最小值交换到数组的第i位
            NSLog(@"%@",mutableArray);
        }
    }
    

    相关文章

      网友评论

          本文标题:oc实现选择排序

          本文链接:https://www.haomeiwen.com/subject/vuwqmttx.html