排序3---插入排序

目录

算法步骤

算法演示

代码

复杂度 


算法步骤

从第二个数开始,与前面的数比较,如果比它大,则往后排,否则将该数置于此位置,不用与前面的数继续比较。(前面的数已经有序,且比它小)

依次遍历,直到最后一个数。

算法演示

排序3---插入排序_第1张图片

代码

vector Sort::insertSort(vector& arr)
{
	int len = arr.size();
	for (int i = 1; i < len; i++)  //从第二个数开始
	{
		for (int j = i; j > 0; j--) //依次与它前面的数进行比较 
		{
			if (arr[j-1] > arr[j])  //当前面的数大于它时,交换两数,继续与前面的数比较
			{
				int temp = arr[j - 1];
				arr[j - 1] = arr[j];
				arr[j] = temp;
			}
			else
			{
				break;     //如果未与前面的数发生交换,说明该数位置不用变化,此时应该终止
			}
		}
	}
	return arr;
}

复杂度 

时间复杂度同样为O(n^2),空间复杂度为O(1)。

你可能感兴趣的:(算法,排序算法,c++)