读书人

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

发布时间: 2012-11-08 08:48:12 作者: rapoo

关于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中还未插入的数据不是要被覆盖了?


[解决办法]


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

读书人网 >C++

热点推荐