昨天回顾了下冒泡排序和鸡尾酒排序,用面向对象的方式写了一下,并且优化了代码,记录一下~
一、冒泡排序
# 冒泡排序
class BubbleSort(object):
def __init__(self, data_list):
self.data_list = data_list
self.length = len(data_list)
# 简单粗暴的排序方式
def b_sort(self):
data_list = list(self.data_list)
for i in range(self.length):
print('**************第%s轮循环**************' % (i + 1))
index_len = self.length
for index in range(index_len - 1):
print(index)
if data_list[index] > data_list[index + 1]:
data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
return data_list
# 优化后美丽动人又可爱的冒泡排序
def new_b_sort(self):
data_list = list(self.data_list)
for i in range(self.length):
print('**************第%s轮循环**************' % (i + 1))
index_len = self.length
mark = False
for index in range(index_len - 1 - i):
print(index)
mark = True
if data_list[index] > data_list[index + 1]:
data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
mark = False
if mark:
break
return data_list
data_list = [2, 3, 1, 7, 4, 3]
bubblesort = BubbleSort(data_list)
res1 = bubblesort.b_sort()
print(res1)
res2 = bubblesort.new_b_sort()
print(res2)
二、鸡尾酒排序
# 鸡尾酒排序
class CocktailSort(object):
def __init__(self, data_list):
self.data_list = data_list
self.length = len(data_list)
# 简单粗暴的排序方式
def c_sort(self):
data_list = list(self.data_list)
for i in range(self.length):
print('**************第%s轮循环**************' % (i + 1))
index_len = self.length
print('左--->右')
for index in range(index_len - 1):
print(index)
if data_list[index] < data_list[index + 1]:
data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
print('右--->左')
index_len = self.length
for index in range(index_len - 1):
print(index)
if data_list[index] > data_list[index + 1]:
data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
return data_list
# 优化后俏皮美丽又懂事的鸡尾酒排序
def new_c_sort(self):
data_list = list(self.data_list)
for i in range(self.length):
print('**************第%s轮循环**************' % (i + 1))
index_len = self.length
mark = False
print('左--->右')
for index in range(index_len - 1- i):
mark = True
print(index)
if data_list[index] < data_list[index + 1]:
data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
mark = False
print('右--->左')
index_len = self.length
for index in range(i, index_len - 1):
mark = True
print(index)
if data_list[index] > data_list[index + 1]:
data_list[index], data_list[index + 1] = data_list[index + 1], data_list[index]
mark = False
if mark:
break
return data_list
data_list = [2, 3, 1, 7, 4, 3]
cocktailsort = CocktailSort(data_list)
res1 = cocktailsort.c_sort()
res2 = cocktailsort.new_c_sort()
print(res1)
print(res2)