问题描述
我有一个数组数组.包含数组的第一个元素都是 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]]; }];