时间复杂度:n^2
NSArray
* numArray =
@[@(4)
,
@(8)
,
@(6)
,
@(1)
,
@(5)
,
@(18)
,
@(13)
,
@(25)
,
@(7)]
;
NSArray * result = [self insertionSort:numArray];
#pragma mark -
插入排序
/**
* 插入排序算法
*
* @param dataArray 待排序数据数组
*
* @return 已排序数据数组
*/
- ( NSArray *)insertionSort:( NSArray *)dataArray
{
NSMutableArray * resultArray = [ NSMutableArray arrayWithArray :dataArray];
for ( int i = 1 ; i < resultArray. count ; i ++) {
// 待排序的数据
NSNumber * tempNum = resultArray[i];
// 待排序数据往前依次比较,如果小于前面的数据,则交换顺序。直到比完或者发现大于前面的数据。
int j = i - 1 ;
while ([resultArray[j] integerValue ] > tempNum. integerValue ) {
resultArray[j + 1 ] = resultArray[j];
j = j - 1 ;
resultArray[j + 1 ] = tempNum;
if (j < 0 ) {
break ;
}
}
}
return resultArray;
* 插入排序算法
*
* @param dataArray 待排序数据数组
*
* @return 已排序数据数组
*/
- ( NSArray *)insertionSort:( NSArray *)dataArray
{
NSMutableArray * resultArray = [ NSMutableArray arrayWithArray :dataArray];
for ( int i = 1 ; i < resultArray. count ; i ++) {
// 待排序的数据
NSNumber * tempNum = resultArray[i];
// 待排序数据往前依次比较,如果小于前面的数据,则交换顺序。直到比完或者发现大于前面的数据。
int j = i - 1 ;
while ([resultArray[j] integerValue ] > tempNum. integerValue ) {
resultArray[j + 1 ] = resultArray[j];
j = j - 1 ;
resultArray[j + 1 ] = tempNum;
if (j < 0 ) {
break ;
}
}
}
return resultArray;
}