
在已经排序的数据的基础上,每一步将下一个待排序的记录,有序的插入到已经排好序的数据集中,
直到将所有等待排序的记录全部插入为止。
直接插入排序是,
一种最简单的插入排序方法,基本操作是将第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;
