插入法

/** * @brief Insertion Sort, from small to large * * @tparam T: typename * @param sortArray: the array to be sorted * @param size: the size of the array */ template <typename T> void InsertionSort(T* sortArray, int size) { for (int i = 1; i < size; ++i) { T temp = sortArray[i]; int j = i - 1; for (; j >= 0; --j) { if (temp < sortArray[j]) { sortArray[j + 1] = sortArray[j]; } else { sortArray[j + 1] = temp; break; } } if (j < 0) { sortArray[0] = temp; } } }

最差情况下:复杂度为O(n2 )

 

最好情况下:复杂度为O(n)

 

插入排序法是一个原地置换排序法,也是一个稳定排序法。插入法虽然在最坏情况下复杂性为θ (n2 ),但是对于小规模输入来说,插入排序法是一个快速的原地置换排序法。许多复杂的排序法,在规模较小的情况下,都使用插入排序法来进行排序,如桶排序、快排。

你可能感兴趣的:(n2)