3 3 1 2 4 0 0
1 2 3 4
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int n,m;
6 int a[111];
7 while(cin>>n>>m){
8 if(n==0 && m==0) break;
9 for(int i=1;i<=n;i++) //输入数列
10 cin>>a[i];
11 for(int i=1;i<=n;i++){
12 if(m < a[i]){ //找到m应该插入的位置
13 for(int j=n;j>=i;j--){ //从这个位置开始将数列依次后推一个格
14 a[j+1] = a[j];
15 }
16 a[i] = m; //将m放在这个位置上
17 break;
18 }
19 }
20 for(int i=1;i<=n+1;i++) //输出数列
21 if(i==n+1)
22 cout<<a[i]<<endl;
23 else
24 cout<<a[i]<<‘ ‘;
25 }
26 return 0;
27 }
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int n,m;
6 int a[111];
7 while(cin>>n>>m){
8 if(n==0 && m==0) break;
9 for(int i=1;i<=n;i++) //输入数列
10 cin>>a[i];
11
12 //折半查找 m
13 int left=1,right=n,mid;
14 while(left<=right){
15 mid = (left + right)/2;
16 if(a[mid]<=m){
17 left = mid+1;
18 }
19 else
20 right = mid-1;
21 }
22 //cout<<right+1<<endl;
23
24 for(int j=n;j>=right+1;j--){ //从这个位置开始将数列依次后推一位
25 a[j+1] = a[j];
26 }
27 a[right+1] = m; //将m放在这个位置上
28
29 for(int i=1;i<=n+1;i++) //输出数列
30 if(i==n+1)
31 cout<<a[i]<<endl;
32 else
33 cout<<a[i]<<‘ ‘;
34 }
35 return 0;
36 }
Freecode : www.cnblogs.com/yym2013
hdu 2019:数列有序!(数据结构,直接插入排序+折半插入排序)
原文:http://www.cnblogs.com/yym2013/p/3552908.html