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)
  • 相关阅读:
    Network Simulator for P4(NSP4) src内容介绍
    解决 E: Unable to correct problems, you have held broken packages. 问题
    【旧版本】Ubuntu 14.04 下 P416编译器 p4c的安装
    Ubuntu 14.04 更新gcc版本至4.9.2
    Ubuntu 14.04 下 安装Protocol Buffers
    Ubuntu 14.04 删除软件附加依赖
    解决Floodlight界面无法显示问题
    OpenVirteX 创建简易虚拟网络
    2017年P4中国峰会北京站 会议小结
    406. Queue Reconstruction by Height
  • 原文地址:https://www.cnblogs.com/95lyj/p/9399267.html
Copyright © 2011-2022 走看看