美文网首页
算法图解学习(二)

算法图解学习(二)

作者: lskylines | 来源:发表于2018-05-24 19:13 被阅读0次

选择排序

具体思路:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

def Is_Sort(arr):           #判断是否排好序
    for i in range(len(arr)-1):
        if arr[i] > arr[i+1]:
            return False
    return True

def Select_Sort(arr):
    for i in range(len(arr)):
        smallest_index = i
        for j in range(i+1, len(arr)):
            if arr[j] < arr[smallest_index]:
                smallest_index = j     #找到右侧最小值得索引
        arr[smallest_index], arr[i] = arr[i], arr[smallest_index]
    return arr





nums = [randint(1,100) for i in range(1000)]  #随机生成100个[1-100]的数
start = time.time()
sort_num = Select_Sort(nums)
print(sort_num)
end = time.time() - start   #测试排序所需时间
print(end)       
print(Is_Sort(sort_num))

数组和链表:

1数组是通过元素的位置进行读取的,所以在读取方面效率高。
在插入和删除元素时,由于需要移动元素后面的位置,效率没有链表高

2链表中的每个元素都存储了下一个元素的地址,使一系列随机的内存地址都串在一起,这就导致了读取时效率低,其优势在于插入和删除两方面。

常见数组和链表操作的运行时间

数组 链表
读取 O(1) O(n)
插入 O(n) O(1)
删除 O(n) O(1)

小结:

        数组都是在一起的
        链表都是分开的,其中每个元素都存储了下一个元素的地址
        数组读取速度很快
        链表在插入和删除速度很快

相关文章

  • 算法图解学习(二)

    选择排序: 具体思路:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继...

  • 二叉搜索树

    二叉搜索树 图解二叉树搜索算法图解:二叉搜索树算法二叉查找树(Binary Search Tree),(又:二叉搜...

  • 学习《算法图解》

    1.大O表示法是一种特殊的表示法,指出了算法的速度有多快。O(n) 小结: 二分查找的速度比简单查找快得多。 O ...

  • 算法图解 (二)

    第二章 选择排序 本节内容数组、链表和选择排序 链表 链表中的元素可以存储在内存的任何地方 链表的每个元素都存储了...

  • 代码小工蚁的#《算法图解》#学习笔记-C8贪婪算法

    代码小工蚁的#《算法图解》#学习笔记-C8贪婪算法C8 贪婪算法greedy algorithms 一、贪婪算法 ...

  • 算法动画图解

    算法动画图解 享受观看,尝试和学习的算法动画图解。算法的广泛领域用动画清晰简洁地解释。可以各种尝试的“测试模式”来...

  • [记录]我的数据结构学习路径

    书单 《学习JavaScript数据结构与算法》《大话数据结构》《算法图解》《剑指offer》 代码

  • 自学资源整理--干货

    算法学习 书籍: 1、算法图解 Aditya Bhargava (作者) 袁国忠(译者) ——在非常适合入门,简单...

  • 排序算法

    上周发了一些图解排序的文章,是最近学习算法的总结,希望对你有启发。下周继续,还有5个排序算法。 1. [图解排序 ...

  • 算法图解学习(三)

    递归: 关于递归经典的例子就是斐波那契数 具体的python代码如下: 栈: 队列:

网友评论

      本文标题:算法图解学习(二)

      本文链接:https://www.haomeiwen.com/subject/eaosjftx.html