zoukankan      html  css  js  c++  java
  • 冒泡排序和鸡尾酒排序(code)

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


    一、冒泡排序

    # 冒泡排序
    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)
  • 相关阅读:
    12C 中,发生脑裂时,节点保留策略
    如何修改集群的公网信息(包括 VIP)
    从 ASH 找到消耗 PGA 和 临时表空间 较多的 Top SQL_ID
    Oracle SCN详解
    10046 trace
    使用trace文件定位ORA-00060问题
    (转)计算机漏洞安全相关的概念POC 、EXP 、VUL 、CVE 、0DAY
    PowerShell 相关常用命令(update...)
    (转)主从同步常遇见问题处理-线上MYSQL同步报错故障处理总结
    pentestbox 安装后的基本设置
  • 原文地址:https://www.cnblogs.com/95lyj/p/9399267.html
Copyright © 2011-2022 走看看