gpt4 book ai didi

iphone - 在不丢失索引的情况下对数组进行升序排序 Objective-C

转载 作者:行者123 更新时间:2023-12-03 20:59:03 24 4
gpt4 key购买 nike

例如,我有一个数组,

    Array {
3.0 at Index 0
2.0 at Index 1
3.5 at Index 2
1.0 at Index 4
}

我想按升序对其进行排序,而不会首先丢失索引,就像这样,

    Array {
1.0 at Index 4
2.0 at Index 1
3.0 at Index 0
3.5 at Index 2
}

当我使用它对数组进行排序时,

NSArray *sortedArray = [hArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
[knnRecog sortUsingDescriptors:[NSArray arrayWithObject:sortAsc]];

我丢失了索引。有谁知道在对数组进行排序后保留索引的方法吗?谢谢

最佳答案

您可以通过更改基础数据结构来进行所需的排序。考虑使用数组的数组,例如:

{    {3.0, Index 0},    {2.0, Index 1},    {3.5, Index 2},    {1.0, Index 4}}

and given a sorting function:

NSComparisonResult customCompareFunction(NSArray* first, NSArray* second, void* context)
{
id firstValue = [first objectAtIndex:0];
id secondValue = [second objectAtIndex:0];
return [firstValue compare:secondValue];
}

你可以像这样排序:

NSArray* myArray = [NSArray arrayWithObjects:
[NSArray arrayWithObjects:
[NSNumber numberWithFloat:3.0f],
[NSNumber numberWithInt:0], nil],
[NSArray arrayWithObjects:
[NSNumber numberWithFloat:2.0f],
[NSNumber numberWithInt:1], nil],
[NSArray arrayWithObjects:
[NSNumber numberWithFloat:3.5f],
[NSNumber numberWithInt:2], nil],
[NSArray arrayWithObjects:
[NSNumber numberWithFloat:1.0f],
[NSNumber numberWithInt:4], nil]];

NSArray* sortedArray = [myArray sortedArrayUsingFunction:customCompareFunction context:NULL];

NSLog(@"Sorted array: %@", sortedArray);

打印内容:

排序数组:( ( 1、 4 ), ( 2、 1 ), ( 3、 0 ), ( 3.5, 2 ))

关于iphone - 在不丢失索引的情况下对数组进行升序排序 Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2489046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com