如何使用c语言进行直接插入排序

如何使用c语言进行直接插入排序

在已经排序的数据的基础上,每一步将下一个待排序的记录,有序的插入到已经排好序的数据集中,

直到将所有等待排序的记录全部插入为止。

直接插入排序是,

一种最简单的插入排序方法,基本操作是将第i条记录插入到前面的第i-1条已排好序的记录中。

写一个直接插入排序法的函数名,包含参数。

int SortByIns(int * ListData,int ListLength);

写二个循环,在循环中应用直接插入算法:

int SortByIns(int * ListData,int ListLength);

{

int lenght = ListLength;

int i,j;

for(i =1;i< length;i++)

{

int tmpData = ListData[i];

j = i-1;

while(tmpData < ListData[j])

{

ListData[j+1]=ListData[j];

j=j-1;

}

ListData[j+1]=tmpData;

}

return 0;

}

写二个循环,在循环中应用直接插入算法:

int SortByIns(int * ListData,int ListLength);

{

int lenght = ListLength;

int i,j;

for(i =1;i< length;i++)

{

int tmpData = ListData[i];

j = i-1;

while(tmpData < ListData[j])

{

ListData[j+1]=ListData[j];

j=j-1;

}

ListData[j+1]=tmpData;

}

return 0;

}

直接插入排序,算法简单,比较适合数目少且基本有序的情况:

我们这里来算一下,它的平均查找长度是多少:

估计长度为n:它的平均查找长度约为:n*n/2;