/*大體上,oc中常用的陣列排序有以下幾種方法:
sortedarrayusingselector:
sortedarrayusingcomparator:
sortedarrayusingdescriptors:
*//*
1、簡單排序(sortedarrayusingselector:)
如果只是對字串的排序,可以利用sortedarrayusingselector:方法就可以了,**如下
*///
簡單排序
void
sortarray1()
/*當然,除了利用字串自帶的compare:方法,也可以自己寫compare:方法,進行物件的比較;如下:
首先是新建了person類,實現方法如下(標頭檔案就省了):
*/#import
"person.h
"@implementation
person
//直接實現靜態方法,獲取帶有name和age的person物件
+(person *)personwithage:(int) age withname:(nsstring *)name
//自定義排序方法
-(nscomparisonresult)compareperson:(person *)person
return
result;
}@end
//主函式**如下:
void
sortarray2()
/*2、利用block語法(sortedarrayusingcomparator:)
蘋果官方提供了block語法,比較方便。其中陣列排序可以用sortedarrayusingcomparator:方法,**如下:
*/void
sortarray3()];
nslog(
@"排序後:%@
",sortedarray);}/*
3、高階排序(sortedarrayusingdescriptors:)
如果是這樣一種情況呢?person類裡有另外乙個類的變數,比如說person類除了name,age變數,還有一輛車car型別,car類裡有個name屬性。對person物件進行排序,有這樣的要求:按照car的name排序,如果是同一輛車,也就是car的name相同,那麼再按照年齡進行排序,如果年齡也相同,最後按照person的name進行排序。
上面這樣就要使用第三種方法,利用排序描述器,不多說,有興趣可以看看api介紹。**如下:
首先寫個car類,實現類car.m**如下:
*/#import
"car.h
"@implementation
car+(car *)initwithname:(nsstring *)name
@end
//然後改寫person類,實現類person.m**如下:
#import
"person.h
"#import
"car.h
"@implementation
person
+(person *)personwithage:(int)age withname:(nsstring *)name withcar:(car *)car
//這裡重寫description方法,用於最後測試排序結果顯示
-(nsstring *)description
@end
//主函式**如下:
void
sortarray4()
/*從結果看出,先按照age排序,如果age相同,按照car排序,如果car相同,按照name排序。
(注意:上面兩種排序方法要想實現字串顯示,請重寫description方法)
*/
NSArray的一些方法
nsarray 不可變陣列類 建立只有乙個元素的陣列 arraywithobject nsarray建立的陣列內部存放的元素必須是 物件 型別 nsarray array nsarray arraywithobject 1 arraywithobject接收的引數是 物件 型別資料,1 可以看做是乙...
NSArray方法 排序
nsarray用來儲存物件的有序列表,可以放入任何型別的物件,但它有兩個限制 首先,它只能儲存oc的物件,不能儲存c中的基本資料型別,如 int float enum struct 和隨機指標 其次不能在nsarray中儲存nil。建立陣列 nsarray array1 一年級 二年級 三年級 四年...
一些排序方法
從網上找了一些排序方法,可能以後用的著,自己先編寫一下,然後存下來 1.冒泡法 思想 1.從a 0 到a n 相鄰的兩個數進行比較,如果滿足條件則交換,如此反覆。2.這種演算法要經過n 1輪的大迴圈。以下是維基百科思想 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工...