直接插入排序

Posted afreeman

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直接插入排序相关的知识,希望对你有一定的参考价值。

//C语言
void insertSort(int *arr,int len) {
    int temp = 0;
    for(int i = 1;i < len;++i) {
        temp = arr[i];
        int j = i - 1;
        while(j >= 0 && arr[j] > temp) {
            arr[j+1] = arr[j];
            j--;
        }
        arr[j+1] = temp;
    }    
}
//C++
const size_t arraySize = 10;
template<typename T>
void insertSort(array<T, arraySize> &arr) {
    T temp;//临时保存待排序的元素
    int j;
    for (int i = 1; i < arr.size(); ++i) {//从第二个元素开始排序
        temp = arr[i];
        j = i - 1;
        while (j >= 0 && arr[j] > temp) {
            arr[j + 1] = arr[j];
            --j;
        }
        arr[j + 1] = temp;//放到for循环内
    }
}

稳定性:稳定

适合:基本有序的少量数据

时间复杂度

技术分享图片

以上是关于直接插入排序的主要内容,如果未能解决你的问题,请参考以下文章

7种基本排序算法的Java实现

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚

排序算法学习(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)

直接插入折半插入希尔排序

直接插入折半插入希尔排序

直接插入排序算法——Java实现