卡牌排序的链表实现

import time
import random

#卡牌排序适用链表节点
class Node:
    def __init__(self,x=None):
        self.val=x
        self.next_node=None
#卡牌排序适用链表
class LinkList:
    def __init__(self):
        self.head=None
    def list_print(self):
        node=self.head
        while node is not None:
            print(node.val,end=' ')
            node=node.next_node
        print()
    #卡牌插入
    def insert(self,x):
        h=self.head
        node=self.head
        p=node.next_node
        #链表不止一个节点
        while p is not None:
            if x<node.val:
                self.head=Node(x)
                self.head.next_node=h
                # self.list_print()
                return
            if x>=node.val and x<=p.val:
                node.next_node=Node(x)
                node.next_node.next_node=p
                # self.list_print()
                return
            else:
                node=node.next_node
            p=node.next_node
        #链表只有一个节点
        if x>node.val:
            node.next_node=Node(x)
        else:
            self.head=Node(x)
            self.head.next_node=h
        return

def randNum(l,n):
    for i in range(n):
        l.append(random.randint(0,1000))

cards=[]
randNum(cards,10000)
#卡牌排序
def card_sort(cards):
    ll=LinkList()
    ll.head=Node(cards[0])
    for i in range(1,len(cards)):
        ll.insert(cards[i])
    # return ll.list_print()

#冒泡排序
def mp_sort(cards):
    for i in range(len(cards)):
        for j in range(i):
            if cards[i]<cards[j]:
                tmp=cards[i]
                cards[i]=cards[j]
                cards[j]=tmp
            pass
    # print(cards)

t0=time.time()
mp_sort(cards)
t1=time.time()
print(t1-t0)
card_sort(cards)
t2=time.time()
print(t2-t1)

跟插入排序差不多,之所以称之为卡牌排序,是因为其原理跟我平时对扑克牌进行整理排序的原理一样,不过可笑的是:花了一早上写出来的算法的运行效率竟然还比不上朴实无华的冒泡排序,心酸。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值