第二章:算法基础
2.1插入排序
假如有n个数存放在A【1-n】中,下标为j的数是当前要进行插入的数,可知A【1~j-1】是已排好序的数,是有序区,而A【j~n】是无序区,每次将A【j】插入到有序区,使有序区的长度增加1,直到有序区的长度为n,排好序为止。
伪代码:
插入排序代码:
习题:
自写答案,如发现有错,请留言。
2.1-1执行过程:
2.1-2:非升序。
运行结果:
2.1-3:在数组中查找V伪代码
SEARCH_V(A,v)
A[0]=v
for i= n downto 0 ///search v in the arraywith n elements.
endif A[i]=v
if i= 0
returnNIL
else
returni
2.1-4:二进制加法相加的原理与十进制大数加法的原理一样,期初假设进位k=0,则加法运算时,相同位上的数字先相加在加上这一位上的进位k,二进制逢2进1,如果和大于等于2,则进位为和除以2,否则进位数为0,当前位上的数字为和值对2取余。
ADD(A,B) ///A,B是n位的二进制数
int k = 0
int C[100]
for i = n downto 1
int temp = A[i]+B[i]+k;
if temp>1
k = temp/2
else
k = 0
C[i]=temp%2
C[0]=k