直接插入排序
直接插入排序的思想
直接插入排序的代码实现
直接插入排序的时间复杂度
直接插入排序的思想
直接插入排序就是在一组有序的数据中再添加一个或者多个数据使其依旧保持有序,可以理解为斗地主,每叫一张牌我们都会给他排序放在最适合的位置上下面是直接插入排序的思想动图,供大家理解
直接插入排序的代码实现
void InsertSort(int* a,int size)
{
//[0,end]假设这是有序的数据下标区间
for(int i=0;i<size-1;i++)
{
int end=i;//i从0开始,假设第一个数就是有序的范围,依次往后排
int temp=a[end+1];
while(end>=0)
{
if(a[end]>temp)
{
a[end+1]=a[end];//让end位置的数往后挪
end--;
}
else
{
break;
}
}
a[end+1]=temp;
}
}
直接插入排序的时间复杂度
直接插入排序的时间复杂度:
(1)最坏的情况[逆序]:O(N^2)
(2)最好的情况[有序]:O(N)