-
问题描述
设顺序用数组A[]表示,表中元素存储在数组下标1~m+n的范围内,前m个元素递增有序,后n个元素递增有序设计一个算法使得整个顺序表有序
-
算法分析
从A[]的m处开始与m+i(i=1,2,...n)个元素比较
1.若第m+i个元素大于或等于第m个元素,则元素已经排好序故排序结束
2.若第m+i个元素小于第m个元素,则从后往前移动元素将m+i个元素插入到正确位置(类似于直接插入排序)
-
算法实现
void Sort(int a[],int m,int n){
int i,k,j,temp;
for(i=m,j=m+1;j<=n+m;i++,j++){
if(a[i]<=a[j])
break;
else {
temp=a[j];
for(k=j;temp<a[k-1]&&k!=0;k--){
a[k]=a[k-1];
}
a[k]=temp;
}
}
}