-
插入排序
插入排序:一组数据,在插入时就开始排序,例如:
5 | 3 | 7 |
现在往里面插入元素4,
可以从头或者从尾开始插:(以从尾插为例)
第一步比较4和7的大小,4<7;
就要往前找
第二步比较4>3
那么4应该放在3的后面7的前面。
5 | 3 | 4 | 7 |
那具体怎么实现完整排序呢?
我们可以新建一个数组,将待排序的第一个数据插到新建的数组里的第一个位置,接下来插入其他元素,就开始从尾或者从头插。
//代码如下 #include<iostream> using namespace std; int main(){ int data[100]; int opdata[100]; int i=0; //输入数据以回车结束 for(i;i<100;i++){ cin>>data[i]; if(cin.get()=='\n')break; } //将数据的第一个元素放到新建的数组里 opdata[0]=data[0]; int num=1;//用来记录opdata元素的个数 //开始插入排序 for(int p=1;p<=i;p++){ opdata[num]=data[p]; for(int j=num;j>0;j--){ if(opdata[j]<opdata[j-1]){ int x = opdata[j]; opdata[j]=opdata[j-1]; opdata[j-1]=x; } } num++; } for(int l=0;l<num;l++) cout<<opdata[l]<<" "; return 0; }
写完代码发现,每次插进去一个元素,其实和原来的数组是一样的,那么我们其实就可以简化代码。