IOS幾種簡單有效的陣列排序方法

2021-07-31 14:11:22 字數 4209 閱讀 7807

//第一種,利用陣列的sortedarrayusingcomparator呼叫 nscomparator ,obj1和obj2指的陣列中的物件

//陣列進行排序

//    nscomparator cpmtr = ^(id obj1, id obj2)

//        //

公升序//        if ([obj1 integervalue] < [obj2 integervalue])

//        return (nscomparisonresult)nsorderedsame;

//    };

nsarray

*sortarray = [[

nsarray

alloc

] initwithobjects

:@"1"

,@"3"

,@"4"

,@"7"

,@"8"

,@"2"

,@"6"

,@"5"

,@"13"

,@"15"

,@"12"

,@"20"

,@"28"

,@""

,nil

];//

排序前nsmutablestring

*outputbefore = [[

nsmutablestring

alloc

] init

];for

(nsstring

*str

insortarray)

nslog(@"

排序前:%@"

,outputbefore);

//    nsarray *array = [sortarray sortedarrayusingcomparator:cpmtr];

nsarray

*arr = [sortarray

sortedarrayusingcomparator

:^nscomparisonresult(id

_nonnull

obj1,

id_nonnull

obj2)

//公升序

if([obj1

integervalue

] < [obj2

integervalue

]) return

(nscomparisonresult

)nsorderedsame

;}];

nslog

(@"===%@"

,arr);

nsmutablestring

*outputafter = [[

nsmutablestring

alloc

] init

];for

(nsstring

*str

inarr)

nslog(@"

排序後:%@"

,outputafter);

第二種 排序方法 利用sortedarrayusingfunction 呼叫 對應方法customsort,這個方法中的obj1和obj2分別是指數組中的物件。

nsinteger customsort(id obj1, id obj2,void* context)

if ([obj1 integervalue] < [obj2 integervalue])

return (nscomparisonresult)nsorderedsame;

}nsarray *array = [sortarray sortedarrayusingfunction:customsort context:nil];

nslog

(@"**********=********************==="

);nsmutablearray

*data1 = [

nsmutablearray

new];

for(

inti =

0; i <

10; i++)

nsmutablestring

*outputbefore3 = [[

nsmutablestring

alloc

] init

];for

(model

*str

indata1)

nslog(@"

排序前:%@"

,outputbefore3);

//   [data1 sortwithoptions:nssortconcurrent usingcomparator:^nscomparisonresult(model* obj1, model* obj2)

//        //

公升序//        if ([obj1.age integervalue] < [obj2.age integervalue])

//        return (nscomparisonresult)nsorderedsame;

//    }];

[data1

sortusingcomparator

:^nscomparisonresult

(model

* obj1,

model

* obj2)

//公升序

if([obj1.

ageintegervalue

] < [obj2.

ageintegervalue

]) return

(nscomparisonresult

)nsorderedsame

;}];

for(

model

*str

indata1)

第三種 利用sortusingdescriptors呼叫nssortdescriptor

nsmutablearray

*data = [

nsmutablearray

new];

for(

inti =

0; i <

10; i++)

nsmutablestring

*outputbefore1 = [[

nsmutablestring

alloc

] init

];for

(studentsobject

*str

indata)

nslog(@"

排序前:%@"

,outputbefore1);

//按照字母排序

//    nssortdescriptor *sortdescriptor = [nssortdescriptor sortdescriptorwithkey:@"name" ascending:yes];

//按照數字排序

nssortdescriptor

*sortdesriptor2 = [

nssortdescriptor

sortdescriptorwithkey

:@"age"

ascending:no

];//    nsarray *sorts = [[nsarray alloc]initwithobjects:&sortdescriptor count:1];

nsarray

*sorts = [

nsarray

arraywithobjects

:sortdesriptor2,

nil];

nsarray

*arr1 = [data

sortedarrayusingdescriptors

:sorts];

nslog

(@"===%@"

,sorts);

nslog

(@"*****>>>%@"

,arr1);

nsmutablestring

*outputafter = [[

nsmutablestring

alloc

] init

];for

(studentsobject

*str

inarr1)

nslog(@"

排序後:%@"

,outputafter);

IOS幾種簡單有效的陣列排序方法

第一種,利用陣列的sortedarrayusingcomparator呼叫 nscomparator obj1和obj2指的陣列中的物件 nscomparator cmptr id obj1,id obj2 if obj1 integervalue obj2 integervalue return ...

ios的幾種簡單有效的陣列排序方法

第一種,利用陣列的sortedarrayusingcomparator呼叫 nscomparator obj1和obj2指的陣列中的物件 nscomparator cmptr id obj1,id obj2 if obj1 integervalue obj2 integervalue return ...

mysql 幾種排序 MySql的幾種排序方式

資料排序的情況很常見,今天介紹一下mysql的幾種排序方式,是我最近有使用到的,希望能對大家有所幫助。這裡先建立一張普通的表,create table test1 id bigint 20 not null auto increment,name varchar 50 not null,date t...