2 liubaoli1989 liubaoli1989 于 2013.07.18 17:08 提问

有关插入排序的问题 c++实现

#include
#include
using namespace std;

vector Insertion_sort(vector& A)
{
for(vector::size_type i=1;i {
int key=A[i];
vector::size_type j=i-1;
while(j>=0&&A[j]<key)
{
A[j+1]=A[j];
j=j-1;
}
A[j+1]=key;
}
return A;
}

int main()
{
vector A;
int x;
cout<<"Please enter some numbers:";
while(cin>>x)
A.push_back(x);
A=Insertion_sort(A);
for(vector::size_type i=0;i<A.size();++i)
cout<<A[i]<<" ";
cout<<endl;
}

请问为什么上述插入排序算法会有错误呢?如果按照升序输出结果的话,也就是将A[j]key没有错误;为什么这样就出现错误呢?请大家帮我解答一下,非常感谢。

2个回答

u011652814
u011652814   2013.08.14 20:58

你这个排版太乱了,能不能排版搞好点,否则看得头晕,有心也帮不上

liuzuyi200
liuzuyi200   2013.08.23 10:51

给你一个插入排序的代码吧!#include
using namespace std;
void sort2(int inarray[],int insize)
{
for(int i=1;i {
int element=inarray[i];
int j=i-1;
while(j>=0&&inarray[j]>element)
{
inarray[j+1]=inarray[j];
j--;
}
inarray[j+1]=element;
}
}
int main()
{
int a[10]={9,6,3,8,5,2,7,4,1,0};
sort2(a,10);
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
return 0;
}
用笔在纸上划一下程序的执行情况就会明白!
如果看不懂的话链接一下下面的网址吧!
http://blog.csdn.net/liuzuyi200/article/details/8978198

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!