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

算法思想:

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

//基于指针的插入排序

/*假设有人想排序“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;

    }

}

 

你可能感兴趣的:(插入排序)