插入排序的代码如下所示,insert1为自己写的插入方法,insert2为数据结构与算法分析上的实现方法,用linux进行编译的时候会有警告,using obsolete binding at ‘j’ [-fpermissive]
for(int j=i;j>0&&a[j-1]>temp;j--),把j在循环中是不断改变的,把temp的值赋值给a[j]可能存在问题,实际不影响排序算法的实现.
#include <iostream>
using namespace std;void insert1(int a[],int num)
{int temp;
for(int i=1;i<num;i++)
for(int j=i;j>0;j--)
if(a[j]<a[j-1])
{
temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
void insert2(int a[],int num)
{int temp;
for(int i=1;i<num;i++)
{ temp=a[i];
for(int j=i;j>0&&a[j-1]>temp;j--)
a[j]=a[j-1];
a[j]=temp;
}
}
int main()
{
int a[6]={34,8,64,51,32,21};
insert1(a,6);
for(int i=0;i<6;i++)
cout<<a[i]<<" ";
cout<<endl;
int b[6]={34,8,64,51,32,21};
insert2(b,6);
for(int i=0;i<6;i++)
cout<<b[i]<<" ";
cout<<endl;
return 0;
}