void insertionSortBinary(TYPE A[], int n)
{
int i, j, l, r, mid; TYPE key;
for(i = 1; i<n; ++i)
{
key = A[i];
l = 0; r = i-1;
while(l <= r)
{
mid = (l+r)/2;
if(key<A[mid]) r = mid-1;
else if(key>A[mid]) l = mid+1;
else {l = mid;break;}
}
for(j = i-1; j>=l; --j) A[j+1] = A[j];
A[l] = key;
}
}
虽然对数组不,由于数组的移动不会降低复杂度,但是对链表,可以使复杂度O(nlogn)。
http://en.wikipedia.org/wiki/Factorial