數據結構與算法複習-插入排序-C++實現

插入排序

/**
 * 插入排序
 * @tparam T
 * @param arr 待排序的數組
 * @param n 數組大小
 */
template<typename T>
void insertionSort(T arr[], int n) {
    //i從1開始 默認arr[0]已經有序
    for (int i = 1; i < n; i++) {
        //j從後向前遍歷 尋找比當前大的元素
        for (int j = i; j > 0; j--) {
            if (arr[j] < arr[j - 1])
                swap(arr[j], arr[j - 1]);
            else
                break;
        }
    }
}

改進的插入排序

/**
 * 改進插入排序
 * @tparam T
 * @param arr 待排序的數組
 * @param n 數組大小
 */
template<typename T>
void insertionSort(T arr[], int n) {
    //i從1開始 默認arr[0]已經有序
    for (int i = 1; i < n; i++) {
        //j從後向前遍歷 尋找比當前大的元素
        T e = arr[i];
        int j;//j保存元素e應該插入的位置
        for (j = i; j > 0 && arr[j - 1] > e; j--) {
            arr[j] = arr[j - 1];
        }
        arr[j] = e;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章