前文链接:http://www.cnblogs.com/tinaluo/p/5240727.html
不得不说明,水平是逐渐提高的。昨天晚上看的顺序表,在第1章,今天看第12章,重新更新了方法。
题目:表A 1 3 5,表B 2 4 6,都呈非递减排序,现将两个表合并成一个表,也呈非递减排序,存放在A中(或者B中),言外之意是不能开辟新表!
其实这种方法是很简单的,无奈敲的代码太少,缺乏认识。思路很容易理解,拿出B中数据,沿着A的后面一直往前比较,如果小于就一直比,如果不小于就插入数据。
唯一麻烦的地方在于,数据的两两移动。
这样就相当于数组中的元素两两移动
while(e<A.List[j]) /*从A的最大值(末端)开始比较*/ { /*即从后往前比较*/ A.List[j+1]=A.List[j];/*两两交换*/ j--; };
现在出现一种情况,假如A的元素值一直都小于e,会导致数组越界,比如,A=1 2 3 B=4 5 6,在while循环中,j--会一直执行!
时间: 2024-10-12 13:28:34