【各种排序系列之】插入排序法

算法思想:

在已形成的有序表中线性查找,并在适当位置插入,把原来位置上的元素向后顺移。

//基于指针的插入排序
/*假设有人想排序“eagle”,“cat”,“ant”,“dog”,“ball”这些字符串。使用基于指针的存储,即一个数组包含了指向实际信息的指针,而不是直接将信息存储在数组元素的存储空间里面。使用这种方式,可以灵活地存储和排序任意复杂结构的数据。
*/
void sortPointers(void **ar, int n, int(*cmp)(const void *, const void *))
//对一个数组ar进行排序,并且其中的元素可以用提供的比较函数cmp进行比较
{
    int j;
    for(j = 1; j<n; j++)
    {
        int i = j-1;
        void *value = ar[j];//保存当前值。
        while(i >= 0 && cmp(ar[i],value) >0)
        {
            ar[i+1] = ar[i];
            i--;
        }
        ar[i+1] = value;
    }
}
原文地址:https://www.cnblogs.com/4everlove/p/3389954.html