插入排序的优化问题,这个是用最简单的从后向前挨个比较的,是否可以用折半查找来寻找新元素添加的位置
#include<iostream>using namespace std;
void insert_sort(int a[],int n)
{
int i,j,temp;
for(i=1;i<n;i++)
{
temp=a[i];
for(j=i-1;j>=0 && temp<a[j];j--)
{
a[j+1]=a[j];
}
a[j+1]=temp;
}
}
void print_arry(int a[], int len)
{
for(int i=0;i<len;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
void main()
{
int n,i;
int a[50];
cout<<"请输入要排序数的个数:"<<endl;
cin>>n;
cout<<"请输入要排序的数:"<<endl;
for(i=0;i<n;i++)
{
cin>>a[i];
}
cout<<endl;
cout<<"排序前为:"<<endl;
print_arry(a,n);
insert_sort(a,n);
cout<<"排序后为:";
print_arry(a,n);
}