zoukankan      html  css  js  c++  java
  • 常见算法

    一.冒泡排序

    # 冒泡排序O(n^2)
    def bubble_sort(li):
        for i in range(len(li)-1):
            for j in range(len(li)-1-i):
                if li[j] >li[j+1]:
                    li[j],li[j+1] = li[j+1],li[j]

    二.选择排序

    # 选择排序
    def select_sort(li):
        for i in range(len(li)):
            minloc = i
            for j in range(i+1,len(li)):
                if li[minloc]>li[j]:
                    li[minloc],li[j] = li[j],li[minloc]

    三.插入排序

    def insert_sort(li):
        for i in range(1,len(li)):
            temp = li[i]
            j = i - 1
            while j>=0 and li[j]>temp:
                li[j+1] = li[j]
                j = j - 1
                li[j+1] = temp

    四.快速排序

    #快速排序
    def  partition(data,left,right):
        tmp =data[left]
        while left < right:
            while left < right and data[right]>= tmp:
                right = right -1
            data[left] = data[right]
            while left <right and data[left]<= tmp:
                left = left +1
            data[right] = data[left]
        data[left] = tmp
        return left
    
    def quick_sort(data,left,right):
        if left < right:
            mid = partition(data,left,right)
            quick_sort(data,left,mid)
            quick_sort(data,mid+1,right)

    五.计数排序

    def count_sort(li):
        count = [0 for i in range(1000)]
        for i in li :
            count[i]+=1
        li.clear()
        for i,x in enumerate(count):
            for j in range(x):
                li.append(i)
    
    li = [22, 32, 32, 64, 3, 342, 65, 22]
    count_sort(li)
    print(li)

     六.单链表

    class Hero():
        def __init__(self, no=None, name=None, nickname=None, pNext=None):
            self.no = no
            self.name = name
            self.nickname = nickname
            self.pNext = pNext
    
    def addHero(head, hero):
        cur = head
    
        while cur.pNext != None:
            cur = cur.pNext
    
        ### 已经找到位置
        cur.pNext = hero
    
    def getAll(head):
    
        cur = head
    
        while cur.pNext != None:
            cur = cur.pNext
            print("编号是:%s, 名字是:%s, 昵称是:%s" % (cur.no, cur.name, cur.nickname))
    
    
    head = Hero()
    
    h1 = Hero(1, '宋江', '及时雨')
    addHero(head, h1)
    
    h2 = Hero(2, '卢俊义', '玉麒麟')
    addHero(head, h2)
    
    h3 = Hero(3, '误用', '智多星')
    addHero(head, h3)
    
    h4 = Hero(4, '公孙胜', '入云龙')
    addHero(head, h4)
    
    getAll(head)
  • 相关阅读:
    【大话设计模式】——浅谈设计模式基础
    mongodb入门安装
    Unity3D研究之多语言用中文做KEY
    java7新特性之Try-with-resources (TWR)
    ORACLE取周、月、季、年的開始时间和结束时间
    topas命令详解
    topas解析(AIX)
    top(topas),vmstat,iostat在linux和AIX操作系统下显示情况
    怎么检查网站的死链接呢?
    网站死链接检测查询工具
  • 原文地址:https://www.cnblogs.com/sima-3/p/11866929.html
Copyright © 2011-2022 走看看