DataStructure
schwamaths
这个作者很懒,什么都没留下…
展开
-
java-LinkedList用法
构造方法构造方法LinkedList()构造一个空列表。LinkedList(Collection<? extends E> c) )构造一个包含指定 collection 中的元素的列表,这些元素按其 collection 的迭代器返回的顺序排列。package first_package;import java.util.*;public class test_linklist { public static void main(String[..原创 2020-05-16 11:32:36 · 244 阅读 · 0 评论 -
二分查找的不同程序设计理解
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。二分 查找大部分情况的程序设计: def Binary_search(nums,target): left = 0 right =len(nums)-1 while left <= right: ...原创 2019-09-05 17:18:47 · 119 阅读 · 0 评论 -
交换排序——快速排序
**快速排序(Quicksort)是对冒泡排序的一种改进。 **快速排序由C. A. R. Hoare在1960年提出。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。算法实现:(1)首先设定一个分界值,通过该分界值将数组...原创 2019-10-04 18:38:24 · 111 阅读 · 0 评论 -
搜索——搜索二叉树
搜索二叉树概念:二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树程序:class Node(): """创建树节点""" def __init__(self,val=None, left = None, rig...原创 2019-10-05 21:09:40 · 139 阅读 · 0 评论 -
搜索——二分搜索
搜索有序集算法:在有序集中, 每次把待查区间中间位置记录R的关键词与K进行比较,若不等则缩小搜索区间并在新的区间内重复重复上述过程,直到搜索成功或者搜索区间长度为0(搜索不成功)为止。程序def BinSearch(nums, val): left = 0 right = len(nums) - 1 while left <= right: mi...原创 2019-10-06 14:47:26 · 72 阅读 · 0 评论 -
选择排序——堆排序
堆排序是一种树形选择排序,是对直接选择排序的有效改进。算法思想:构建大根堆之后,输出堆顶记录,对剩余的n-1个记录继续构建大根堆,便可得到n个记录的次大值,如此反复执行,就可以得到一个有序序列。这个过程叫堆排序。程序:def Restore(key,j,vCount): """构建以结点j为根,一共有vCount个结点的大根堆,从j结点往下遍历""" while j...原创 2019-10-06 22:53:09 · 284 阅读 · 0 评论 -
选择排序——直接选择排序
本文借鉴于lsgo实验室创始人马老师算法:程序def StraightSelectSort(nums): for i in range(len(nums)-1): k =i # 记录最小的数 temp = nums[i] for j in range(i+1,len(nums)): # 选出最小的数 ...原创 2019-10-07 20:28:08 · 76 阅读 · 0 评论 -
插入排序——希尔插入排序
本文借鉴于lsgo实验室创始人马老师希尔插入排序算法:程序:def ShellInsertSort(nums): """希尔插入排序""" delta = len(nums) //2 while delta >0: shell(delta,nums) delta = delta//2 return numsde...原创 2019-10-07 21:16:32 · 447 阅读 · 0 评论