话不多说,选择排序就是通过遍历数组找出每次遍历数组的最小元素的下标,然后将其按顺序从第一位依次排列
比如一个原始数列: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);
}
}