//插入排序浊伙,把待排序的數(shù)組分為兩部分,左邊為已經(jīng)有序的數(shù)組长捧,右邊為待排序的元素嚣鄙。然后不斷的從右邊取出元素放入左邊已經(jīng)排序好的數(shù)組中。
static NSArray * straightInsertionSort(NSArray *unsortedArr)
{
NSMutableArray *sortedArray = [NSMutableArray arrayWithArray:unsortedArr];
/**? 拿出每一個數(shù)? */
/**? 默認0 位置為已經(jīng)排序的區(qū)間,0--->n為沒有排序的區(qū)間,所以直接從1位置開始拿出數(shù)據(jù)? */
for (int i = 1; i < sortedArray.count; i++)
{
/**? 拿出當前位置的數(shù)a,和前一位置的數(shù)字b進行大小比較,如果a < b,就在0---->i - 1的區(qū)間內(nèi)為a找一個合適的位置去存放? */
/**? 當前位置數(shù)字a? */
int a = [sortedArray[i] intValue];
/**? 前一位置數(shù)字b? */
int b = [sortedArray[i - 1] intValue];
/**? 如果a < b,則繼續(xù)讓a與b的前一位數(shù)字比較? */
if (a < b)
{
/**? 如果a < b,就在0---->i - 1的區(qū)間內(nèi)為a找一個合適的位置去存放? */
/**? 從后往前找位置,0--->i - 1? */
for (int j = i - 1; j >= 0; j --) {
/**? 2,12,98,42,94,46,53,12? */
/**? 取出前一位數(shù)字ca? */
int c = [sortedArray[j] intValue];
if (c <= a) {
/**? 對a進行位置移動,從原來位置刪除,移動到c后面一位? */
[sortedArray removeObjectAtIndex:i];
[sortedArray insertObject:NUM(a) atIndex:j + 1];
break;
}
}
}
}
return sortedArray;
}