张一极
xxxxxxxxxx
261'''
21.将一个顺序表表头作为比较元素,大于表头的放在后面,小于表头的放在后面
3从最后一个元素开始,往前寻找,直到有小于temp的存在,此时把表头的位置定下来,将对应位置的元素赋值给表头(此时表头数据已经在temp里可直接覆盖),接着从头开始,直到寻找到大于temp的数据,将这个数据赋值给end,接着继续循环,往下将大于的顺序表元素赋值到后面,将小于temp的数据表元素赋值到头部,直到i和j相遇,此时得到最后的位置即temp应该存在的位置
4'''
5list = [3,-1,-27,-4,-5,6,-1]
6def move_element_ahead_end(A):
7 i=0
8 j=len(A)-1
9 temp = A[0]
10 while i<j:
11 while i<j and A[j]>temp:
12 j-=1
13 print(j)
14 if i<j:
15 print(A)
16 A[i]=A[j]
17 print(A)
18 i+=1
19 while i<j and A[i]<temp:
20 i+=1
21 print(i)
22 if i<j:
23 A[j]=A[i]
24 A[i]=temp
25 print(A)
26move_element_ahead_end(list)
xxxxxxxxxx
171'''
22.删除i-j范围内的数据,不增加新链表,使用j往后的(j-i)个数据覆盖前面(j-i)个元素,代码如下:
3 细节一:remove后,每次list长度都会变短,会产生溢出数值
4 细节二:dele_place的起点
5 解决:删除-1个元素,循环n次,等同于删除n到len(data)长度的数据
6'''
7sqlist = [2,3,4,11,1,-2,39,10]
8def dele_i2j_element(data,i,j):
9 print("before:",data)
10 out = 0
11 for replace_index in range(j,len(data)):
12 data[i+(replace_index-j)]=data[replace_index]
13 out = i+(replace_index-j)
14 for dele_place in range(out+1,len(data)):
15 data.remove(data[-1])
16 print("after:",data)
17dele_i2j_element(sqlist,1,6)