昨天回顾了下冒泡排序和鸡尾酒排序,用面向对象的方式写了一下,并且优化了代码,记录一下~


一、冒泡排序

# 冒泡排序
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)

最新文章

  1. python之登录小程序
  2. 【ueditor】api方法
  3. Xcode 此证书签发者无效
  4. ArcEngine中打开各种数据源(WorkSpace)的连接
  5. poj 1286&amp;&amp;poj2409 Polya计数 颜色匹配
  6. Install pyodbc in OpenSUSE
  7. crontab日常使用梳理
  8. Python之队列queue模块使用 常见问题与用法
  9. JavaScript-setInterval-周期性行定时器-倒计时
  10. JavaWeb实现文件上传下载功能实例解析
  11. hdoj 1286 找新朋友【欧拉函数】
  12. mvc模式jsp+servel+jdbc oracle基本增删改查demo
  13. 跨境移动互联网的魅力演绎,hao123无论成就下一个条目?
  14. 使用多个DNS供应商以缓解DDoS攻击
  15. KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data的解释(转)
  16. xshell安装运行时提示缺少mfc110.dll
  17. 双网卡设置(转:https://www.cnblogs.com/visionfeng/p/5825078.html)
  18. UVALive - 6439(思维题)
  19. [Node.js] 08 - Web Server and REST API
  20. C#在高分屏上让窗体程序忽略系统的显示缩放

热门文章

  1. SpringBoot树获取方法总结
  2. 帆软报表(finereport)控件背景色更改
  3. Solution Set -「LOCAL」冲刺省选 Round XXI
  4. Solution -「CF 848D」Shake It!
  5. .NET 云原生架构师训练营(权限系统 代码实现 WebApplication)--学习笔记
  6. Python+selenium自动循环扔QQ邮箱漂流瓶
  7. Swagger2简单实用
  8. 超简单集成 HMS ML Kit 实现最大脸微笑抓拍
  9. Docker 设置国内镜像源
  10. Java基础——选择语句