6-1 有序表中插入元素x (20 分)

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;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微__凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值