开发中经常会遇见数组去除重复元素并将乱序的元素有序排列的需求,刚好今天项目中也涉及到,废话不多说,直接上code!这里的数组元素为字符串
/**
* 冒泡排序
*/
-(void)bubbleSort:(NSMutableArray *)arr{
if (arr.count <3) {
return;
}
for (int j =1; j<= [arr count]; j++) {
for(int i =0 ;i < j ; i++){
if(i == [arr count]-1)return;
NSString * str1 = [arr objectAtIndex:i];
NSString * str2 = [arr objectAtIndex:i+1];
if([str1compare:str2] ==NSOrderedDescending){
[arr exchangeObjectAtIndex:iwithObjectAtIndex:i+1];
}
}
}
}
/**
* 数组去重
*/
- (NSArray *)deleteSameItemsInArray:(NSMutableArray *)arr{
NSLog(@"去重前的数组%@",arr);
NSMutableArray *tmpArr = [[NSMutableArrayalloc]initWithCapacity:0];
[tmpArr addObject:[arrfirstObject]];
int j;
for (int i=0; i<arr.count; i++) {
NSString *str = [arrobjectAtIndex:i];
for (j=0; j<tmpArr.count; j++) {
NSString *tmpStr = [tmpArrobjectAtIndex:j];
if ([strcompare:tmpStr]==NSOrderedSame) {
break;
}
}
if (j==tmpArr.count) {
[tmpArr addObject:str];
}
}
NSLog(@"去重后的数组%@",tmpArr);
[self bubbleSort:tmpArr];
return tmpArr;
}