要求将算法1-6设计为3. 3. 4节定义的顺序表Dy

要求将算法1-6设计为3. 3. 4节定义的顺序表DynamicArrayList类的方法。

3.设计算法,将整数顺序表所有元素划分为两部分,其中前面部分的元素都小于等于x,后面部分的元素都大于x.

答案
class DynamicArrayList:
    def __init__(self):
        self.data = []

    def partition(self, x):
        """划分顺序表:前半 x,原地操作"""
        n = len(self.data)
        i = 0
        j = n - 1
        # 双指针,从两端向中间靠拢
        while i < j:
            # i向后找大于x的元素
            while i < j and self.data[i] <= x:
                i += 1
            # j向前找小于等于x的元素
            while i < j and self.data[j] > x:
                j -= 1
            # 交换
            if i < j:
                self.data[i], self.data[j] = self.data[j], self.data[i]

题目信息

题号:8227
题型:简答题
知识点:Python
难度:普通