首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于C++的插入排序有关问题

2012-11-08 
关于C++的插入排序问题有一插入排序代码:templateclass Typevoid insert(const ElementTypee,Element

关于C++的插入排序问题
有一插入排序代码:

template<class Type>

void insert(const Element<Type>e,Element<Type>*list,int i){

  while(i>=0&&(e.getKey()<list[i].getKey())){

  list[i+1]=list[i];

  i--;

  }

  list[i+1]=e;

}


template<class Type>

void InsertionSort(Element<Type>*list,const int n){

  ?for(int j=1;j<n;j++)insert(list[j],list,j-1);

}

假设Element类已经定义。

insert函数是从数组末端开始扫描,为找到目标位置前,都将数据往后移一位,也就是对该数组有实质性的改变。

InsertionSort函数中调用insert函数的时候插入元素为list中的元素,而被插入序列也是list,插入的时候list即被改动,那在list中还未插入的数据不是要被覆盖了?


[解决办法]


不是覆盖,只是将得到的数据放到缓冲区相应的位置,插入完在缓冲区就完成了排序,并非覆盖。
你可以参考下网络上的资料,快速排序(插入排序)。

热点排行