class MyStackSort:
MIN = list()
MAX = list()
def sort(self, my_list):
for index, num in enumerate(my_list):
if self.MIN:
if self.MIN[0] >= num:
self.MIN = [num] + self.MIN
elif self.MIN[-1] == num:
self.MIN = self.MIN + [num]
elif self.MIN[0] < num and self.MIN[-1] > num:
for ind, min_n in enumerate(self.MIN):
if ind != 0 and min_n == num or self.MIN[ind-1] < num < self.MIN[ind]:
self.MIN = self.MIN[:ind] + [num] + self.MIN[ind:]
break
elif not index == 0 and num != my_list[index-1]:
self.MIN += [num]
if self.MAX:
if self.MAX[-1] <= num:
self.MAX += [num]
elif self.MAX[0] == num:
self.MAX = [num] + self.MAX
elif self.MAX[0] < num < self.MAX[-1]:
for ind, max_n in enumerate(self.MAX):
if ind != 0 and max_n == num or self.MAX[ind-1] < num < self.MAX[ind]:
self.MAX = self.MAX[:ind] + [num] + self.MAX[ind:]
break
else:
self.MAX += [num]
return self.MIN + self.MAX
我尝试过使用代码对列表进行排序,但我很困惑它是否正确以及是否是更好的解决方案。 如果有人知道请回复。
这个排序算法不正确。这是一个未正确排序的列表的反例。
a = [1, 2]
sorter = MyStackSort()
print(sorter.sort(a))
输出:
[2, 1, 2]