直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录增加1的有序表
如:{7,8,9,4,5,6,1,2,3,0},首先从8开始遍历,8前面的元素7比8小,继续遍历到9,7和8都比9小,继续遍历到4,9比4大,4暂的存,9后移,9的位置空出来,8比4大,8移动到9的位置,8的位置空出来,7比4大。7后移到8的位置,7的位置空出来,4前面的元素遍历结束,将暂存的4放在7的位置。继续向后遍历,得到5,依然按照4的步骤操作,以此类推,,,,,
代码如下:
void InsertSort(vector<int> &arr)
{
int j;
for (int i = 1; i < arr.size(); i++)
{
if (arr[i] < arr[i - 1])
{
int tmp = arr[i];
for ( j = i - 1; j>=0&&arr[j]>tmp; j--)
{
arr[j + 1] = arr[j];
}
arr[j + 1] = tmp;
}
}
}
int main()
{
//vector<int> vec={7,8,9,4,5,6,1,2,3,0};
vector<int> vec = {55,48,96,12,53,67,5,47,68,24};
InsertSort(vec);
for (int i = 0; i < vec.size(); i++)
{
cout << vec[i] << " ";
}
system("pause");
return 0;
}
结果: