C++数据结构--插入排序

来源:互联网 发布:任那 知乎 编辑:程序博客网 时间:2024/05/29 18:00

  *在进行第i遍时,[0 ,i-1]范围内的元素已经排序完毕

  *第i遍的任务时通过扫描以前已分类的子表,给vec[i]在[0,i]的子表范围内找到正确的位置
  *插入排序并不需要额外的辅助空间,只是在原数组上进行排序


例如,对字符串数组Monroe,Chin,Flores,Stein,Dare进行插入排序






实现代码:

template<typename T>
void insertSort(vector<T> &vec)
{
  for(int i=1;i<vec.size();i++)
  {
  T tem=vec[i];//用tem记下将要被插入排序的vec[i]
  int j=i;
  for(;j>0&&vec[j-1]>tem;j--)//扫描已分类的子表[0 ,i-1],给vec[i]在[0,i]的子表范围内找到正确的位置
  {
  vec[j]=vec[j-1];
  }
  vec[j]=tem;
  }


}


int main()
{
vector<string> vec{string("Monroe"),string("Chin"),string("Flores"),string("Stein"),string("Dare")};


insertSort(vec);
for(string str:vec)
{
cout<<str<<ends;
}

return 0;
}
原创粉丝点击