标签:
void insertSort()
{
int a[10]={10,2,3,5,8,9,7,1,55,6};
int nVal=0;
for(int i=1; i<10; i++)
{
nVal=a[i];
int j=i-1;
while( j>=0 && nVal<a[j] )
{
a[j+1]=a[j];
j--;
}
a[j+1]=nVal;
}
}
#如果待排序列中记录按关键字非递减有序时,所需进行关键字间比较的次数达到最小值n-1。
#时间复杂度为O(n2);
#稳定排序方法
2.折半插入排序(关键字有序排列)
void insertBSort()
{
int a[10]={10,2,3,5,8,9,7,1,55,6};
int nVal=0;
for(int i=1; i<10; i++)
{
nVal=a[i];
int low=0;
int high=i-1;
int mid=0;
//low的位置即为要放入的元素的位置;且low始终大于high一个刻度
while(low<=high)
{
mid=(low+high)/2;
if(nVal<a[mid]) high=m-1;
else low=m+1;
}
int j=i-1;
while( j>=low && nVal<a[j] )//或者while( j>=high+1&& nVal<a[j] )
{
a[j+1]=a[j];
j--;
}
a[low]=nVal;
}
}
#时间复杂度为O(n2);
标签:
原文地址:http://www.cnblogs.com/hj-blog/p/4432924.html