upd
This commit is contained in:
25
algorithms/labs/lab8/code/sorting/1.py
Normal file
25
algorithms/labs/lab8/code/sorting/1.py
Normal file
@@ -0,0 +1,25 @@
|
||||
def three_sum(nums):
|
||||
res = []
|
||||
nums.sort()
|
||||
for i in range(len(nums)):
|
||||
if i > 0 and nums[i] == nums[i - 1]:
|
||||
continue
|
||||
j = i + 1
|
||||
k = len(nums) - 1
|
||||
while j < k:
|
||||
s = nums[i] + nums[j] + nums[k]
|
||||
if s > 0:
|
||||
k -= 1
|
||||
elif s < 0:
|
||||
j += 1
|
||||
else:
|
||||
res.append([nums[i], nums[j], nums[k]])
|
||||
j += 1
|
||||
while j < k and nums[j] == nums[j - 1]:
|
||||
j += 1
|
||||
return res
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
nums = [-1, 0, 1, 2, -1, -4]
|
||||
print(three_sum(nums))
|
||||
20
algorithms/labs/lab8/code/sorting/2.py
Normal file
20
algorithms/labs/lab8/code/sorting/2.py
Normal file
@@ -0,0 +1,20 @@
|
||||
def sort_colors(nums):
|
||||
low = 0
|
||||
mid = 0
|
||||
high = len(nums) - 1
|
||||
while mid <= high:
|
||||
if nums[mid] == 0:
|
||||
nums[low], nums[mid] = nums[mid], nums[low]
|
||||
low += 1
|
||||
mid += 1
|
||||
elif nums[mid] == 1:
|
||||
mid += 1
|
||||
else:
|
||||
nums[mid], nums[high] = nums[high], nums[mid]
|
||||
high -= 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
nums = [2, 0, 2, 1, 1, 0]
|
||||
sort_colors(nums)
|
||||
print(nums)
|
||||
13
algorithms/labs/lab8/code/sorting/3.py
Normal file
13
algorithms/labs/lab8/code/sorting/3.py
Normal file
@@ -0,0 +1,13 @@
|
||||
def wiggle_sort(nums):
|
||||
nums.sort()
|
||||
mid = (len(nums) + 1) // 2
|
||||
left = nums[:mid][::-1]
|
||||
right = nums[mid:][::-1]
|
||||
nums[::2] = left
|
||||
nums[1::2] = right
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
nums = [1, 5, 1, 1, 6, 4]
|
||||
wiggle_sort(nums)
|
||||
print(nums)
|
||||
Reference in New Issue
Block a user