04資料結構排序演算法之直接插入排序

weixin_33850890發表於2018-05-24

直接插入排序(Straight Insertion Sort)基本思想是將資料分為有序區和無序區,每次從無序區中拿出一個資料插入到有序區中。

直接插入排序和簡單選擇排序很類似,簡單選擇排序的基本思想也是將資料分為有序區和無序區,每次從無序區中選擇一個最小值放入有序區最後。具體參考簡單選擇排序(https://www.jianshu.com/p/9fbc1678f5aa

具體程式碼實現如下:


/**
 *  直接插入排序
 *
 *  @param dataArray 要排序的資料來源
 *
 *  @return 已排序的資料
 */
+ (NSArray *)straightInsertionSort:(NSArray *)dataArray {
    NSMutableArray *resultArray = [NSMutableArray arrayWithArray:dataArray];
    NSNumber *temp;
    NSInteger j;
    for (NSInteger i = 1; i < resultArray.count; i ++) {
        if (resultArray[i] < resultArray[i-1]) {
            temp = resultArray[i];//儲存帶排序的資料
            for (j = i - 1; j >= 0 && resultArray[j] > temp; j --) {//插入到前面已經排序的有序區中
                resultArray[j + 1] = resultArray[j];
            }
            resultArray[j + 1] = temp;
        }
        NSLog(@"i=%ld array:%@",i, resultArray);
    }
    return resultArray;
}

相關文章