6-1 有序表中插入元素x (20 分)
编写一个函数,在有序表中插入元素x,使得新序列仍是有序的。
函数接口定义:
def SqListInsertX(L,x): #需要你编写该函数的具体实现
其中,L和 x 是函数的参数。 L 是SqList的对象; x是将插入有序表的值。
说明:SqListInsertX是独立的函数,不是SqList类中的方法。
顺序表SqList的定义如下:
class SqList:
def __init__(self,n): # 构造函数
self.initcapacity = n; # 初始容量设置为10
self.capacity = self.initcapacity # 容量设置为初始容量
self.data = [None] * self.capacity # 设置顺序表的空间
self.size = 0 # 长度设置为0
def CreateList(self, a): # 由数组a中元素整体建立顺序表
for i in range(0, len(a)):
if self.size == self.capacity: # 出现上溢出时
self.resize(2 * self.size); # 扩大容量
self.data[self.size] = a[i]
self.size += 1 # 添加后元素个数增加1
def getsize(self): # 返回长度
return self.size
def __getitem__(self, i): # 求序号为i的元素
return self.data[i]
def __setitem__(self, i, x): # 设置序号为i的元素
self.data[i] = x
def display(self): # 输出顺序表
for i in range(0, self.size-1):
print(self.data[i], end=' ')
print(self.data[self.size-1])
测试代码:
n=int(input())
a=list(map(int,input().split()))
L=SqList(100)
L.CreateList(a)
a=int(input())
SqListInsertX(L,a)
L.display()
输入样例:
第1行:输入有序表中元素的个数n
第2行:依次输入有序表中的n个元素
第3行:需要插入的元素e
5
1 2 3 4 7
6
输出样例:
输出插入元素e后的有序表。例如:
1 2 3 4 6 7
Python题解:
def SqListInsertX(L,x):#插入元素
t=-1 # 插入位置
if L[0]>x:# 插入第一个位置
t=0
else:
for i in range(1, L.size ):
if (L[i - 1] < x and L[i]>x ):
t = i
break
L.size=L.size+1
for i in range(L.size , t,-1):
L[i] = L[i - 1]
L[t]=x;