题目
5、算法题2
数组al[0,mid-1] 和 al[mid,num-1],都分别有序。将其merge成有序数组al[0,num-1],要求空间复杂度O(1)
我的实现:
将从前半段移除的值,用插入排序插入到后半段数组中,保持有序,这样将前半部分排序完,就这个数组有序了
可以运行的程序地址和word文档:http://download.csdn.net/detail/cq20110310/5196158
希望共同讨论,会不断的发笔试和面试的题目及答案,希望大家支持
void test_merge(int a[],int num,int mid) { int i=0; int j=mid; int temp; while (i<mid) { if (a[i]<=a[mid]) { i++; } else { temp=a[i]; a[i]=a[mid]; //将从前半段移除的值,用插入排序插入到后半段数组中,保持有序,这样将前半部分排序完,就这个数组有序了 for (j=mid+1;j<num;j++) { if (temp <=a[j] ) { a[j-1]=temp; break; } else { a[j-1]=a[j]; } if (j==num-1) { a[j]=temp; break; } } i++; } } }