Day8-堆排序和移除元素

Posted spytensor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day8-堆排序和移除元素相关的知识,希望对你有一定的参考价值。

Day8-堆排序和移除元素

几次面试后深知非科班在基础上的弱势,故决定自2018年5月7日起刷一波算法和数据结构,编程语言为:Python。



(6)排序算法-堆排序

算法思想:

堆排序是一种利用堆这种特殊的数据结构进行快速排序的算法,主要是利用最大堆或者最小堆堆性质,不断地重复抽元素--恢复堆的性质这样的操作。

Python代码:


def heap_sort(list):
    #创建以及调整最大堆
    for start in range((len(list) - 2) // 2, -1, -1):
        sift_down(list, start, len(list) - 1)    # 堆排序
    for end in range(len(list) - 1, 0, -1):
        list[0], list[end] = list[end], list[0]
        sift_down(list, 0, end - 1)    
   return list# 最大堆调整

def sift_down(lst, start, end):    root = start    
   while True:        child = 2 * root + 1        if child > end:            
           break        if child + 1 <= end and lst[child] < lst[child + 1]:            child += 1        if lst[root] < lst[child]:            lst[root], lst[child] = lst[child], lst[root]            root = child        
       else:            
           break






LeetCode-27 移除元素

问题描述:

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

重点:只是在原位置移除且不考虑新长度后的元素。

实现代码:


class Solution:
    def removeElement(self, nums, val):
        """        :type nums: List[int]        :type val: int        :rtype: int        """
        j = 0
        for i in range(len(nums)):            
           if nums[i] != val:                nums[j] = nums[i]                j += 1        return (j)



Python算法实现之---冒泡排序

深度学习开发环境配置--win10+Tensorflow-GPU



以上是关于Day8-堆排序和移除元素的主要内容,如果未能解决你的问题,请参考以下文章

是否可以为 Flexbox 插入和移除设置动画?

关于JavaScript中注册和移除事件

算法排序之堆排序

HTML input文本框设置和移除默认值

js中input文本框设置和移除默认值

JAVA 用 List 实现堆