问题标题: 酷町堂:插入排序 插入排序!

2
0
已解决
蒋智航
蒋智航
高级天翼
高级天翼

插入排序 插入排序

代码 & 思路 & 在网上抄......别痴心妄想了,行不行我举报你!千万别抄 & 别发布以升级为目的的无实际意义的回答,行不行我举报你! 

蒋智航在2018-04-12 18:06:38追加了内容

信不信


0
已采纳
尹宗鑫
尹宗鑫
新手守护
新手守护

/*
插入排序: 插入排序:5
   a[1] a[2]  a[3] a[4]
    1    4     7    3
前移:a[1]=a[2];即 a[w]=a[w+1];
后移:a[2]=a[1];即a[w+1]=a[w];
核心思想 :从第2个人到第n个人,开始插入排序i:2.3..<=n
x=a[i];保存a[i]
第1步:从后向前 j=i-1....>=1找第一个比x小的数(下标为k,有可能k=0);
第2步:后移:从i-1...=k+1>= a[w+1]=a[w];
插入到a[k+1]=x; 
*/
#include<iostream>
using namespace std;
int a[1001],n;
void insert()
{ int i,j,k,w,x;
cin>>n;    
cin>>a[1];//第1个数不需要排序 
for(i=2;i<=n;i++)//从第2个人开始插入 
{cin>>a[i];//先读入 
x=a[i];//把当前要排序的a[i]保存
k=0;//!!当所有人都比你大,k下标为0 
//第1步:从后向前找第一个比x小的数
for(j=i-1;j>=1;j--)    //你前面一个到第一个 
  if(a[j]<x)
    { k=j; //记比你小的数下标位置 
     break;//提前结束 
    } 
 else continue;
//第2步:从i-1到k+1后移:假设i=10,k=1 
for(w=i-1;w>=k+1;w--)//a[10]=a[9]..a[w+1=3]=a[w=2]
a[w+1]=a[w];
// 第3步:插入x
a[k+1]=x;
}//end for i
cout<<"排序后为:"<<endl;    
for(i=1;i<=n;i++)
cout<<a[i]<<" ";
}
int main()
{ insert();
return 0;
}

1
0
0
我要回答