直接插入排序
思路分析:在一个有序的数组中为要插入的元素找到指定的插入位置,但这个位置并不一定是最后排序结果中对应元素的最终位置。
时间复杂度:最坏情况(整个序列逆序时)时间复杂度为O(n2),最优情况(整个序列初始顺序,从大到小时)时间复杂度为O(n),平均情况时间复杂度为O(n2)。
源代码:
void InsertSort(int R[],int n)
{
int i,j,temp;
for(i=1;i<n;i++) //插入排序共需要插入n个元素,但此处我们默认序列中存在R[0]这个元素,故之后需进行n-1次插入操作
{
temp=R[i];
j=i-1;
while(j>=0&&temp<R[j]) //比插入元素大的元素进行后移操作
{
R[j+1]=R[j];
--j;
}
R[j+1]=temp; //插入要插入的元素
}
}