目标C:对二维数组进行排序[英] Objective C: Sort Two Dimensional Array

本文是小编为大家收集整理的关于目标C:对二维数组进行排序的处理方法,想解了目标C:对二维数组进行排序的问题怎么解决?目标C:对二维数组进行排序问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个数组数组.包含数组的第一个元素都是 NSDate 对象.我想按从最近到最少的顺序对包含数组的数组进行排序.出于某种原因,以下排序算法会导致无限循环.谁能帮我吗?谢谢.

最佳...SL

//array is the array containing all of the other arrays(that have NSDates as their first elements)
//temp is the new array being added to the end of the array, to later be sorted into the correct position.

[array addObject:temp];    
NSMutableArray *tempArray;

for (int i=0; i<[array count]; i++) 
{
    NSDate *session1, *session2;
    session1 = [[array objectAtIndex:i] objectAtIndex:0];
    session2 = [[array objectAtIndex:[array count]-1] objectAtIndex:0];

    if([session1 compare:session2] == NSOrderedDescending)
{
        tempArray = [array objectAtIndex:i];
        [array insertObject:[array objectAtIndex:[array count]-1] atIndex:i];
        [array insertObject:tempArray atIndex:[array count]-1];
    }
}

推荐答案

这会导致无限循环,因为在每一步中,您都在向数组中插入另外两个值.因此,您的数组的增长速度比您遍历它的速度快.我假设您打算交换值.

无论如何,更简单、更高效的排序是使用内置的排序功能:

// NSArray *sortedArray, with the unsorted 'array' pulled from some other instance
sortedArray = [array sortedArrayUsingComparator:^(id a, id b) {
    return [[b objectAtIndex:0] compare:[a objectAtIndex:0]];
}];

本文地址:https://www.itbaoku.cn/post/924619.html