
数据结构算法基础
各种常用算法
十 一 丶
一个对无聊深恶痛绝的90后精神小伙
展开
-
Golang-排序
golang 排序Golang 排序冒泡排序选择排序插入排序快速排序Golang 排序冒泡排序package mainimport "fmt"func main(){ nums := []int{2,3,8,4,6,12,3,4,59,1,2,7} fmt.Println(nums) fmt.Println(bubbleSort(nums))}// bubbleSort 冒泡排序func bubbleSort(nums []int) []int{ if len(nums) &原创 2022-01-09 21:02:58 · 522 阅读 · 0 评论 -
丑数
给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。示例 1:输入:n = 6输出:true解释:6 = 2 × 3示例 2:输入:n = 8输出:true解释:8 = 2 × 2 × 2示例 3:输入:n = 14输出:false解释:14 不是丑数,因为它包含了另外一个质因数 7 。示例 4:输入:n = 1输出:true解释:1 通常被视为丑数。javapacka原创 2021-04-10 22:47:31 · 171 阅读 · 0 评论 -
Java中使用数组模拟栈的基本操作
废话不多说,直接上代码实现类,主要实现功能如下:返回栈长度判断栈满、栈空压栈、弹栈遍历栈中的元素其中带有有参构造和无参构造方法,默认初始化栈的长度为5,用户可以通过有参构造自定义长度package com.company.arry;// 使用数组模拟栈的接操作public class ArrayImitateStack { // 定义一个数组作为栈,设置默认初始长度为5 Object [] stack = new Object[5]; private int原创 2020-06-20 11:14:23 · 272 阅读 · 0 评论 -
Java基本算法《排序算法:冒泡排序》
冒泡排序package JavaNote001;import java.util.Arrays;import java.util.Scanner;// 排序算法中的冒泡排序public class ArrayListBubbleSort{ public static void main(String[] args) { int [] m = intiList...原创 2020-03-23 19:40:24 · 161 阅读 · 0 评论 -
Java基本算法《排序算法:选择排序》
选择排序package JavaNote001;import java.util.Scanner;import java.util.Arrays;/** * 选择排序: 初始状态:无序区为R[1..n],有序区为空。 1)第1趟排序 在无序区R[1..n]中选出关键字最小的(最大的)记录R[k],将它与无序区的第1个(无需的数组的第一个元素一定是有序的)记录R[1]交换,使R[...原创 2020-05-18 17:40:43 · 168 阅读 · 0 评论 -
python二分(折半)查找
'''折半查找:折半查找使用的是二分思想,将要查找的数组不断的对半分,通过比较,在某一个对半的数组中继续查找,从而减少查找次数'''def binary(mylist,data): #记录首尾结点 low = 0 high = len(mylist) #查找的数组不为空 while low <= high: #折半下标 ...原创 2020-01-18 20:34:31 · 379 阅读 · 0 评论 -
python堆排序、归并排序
'''堆排序'''#构造大根堆def createHeap(mylist,index,heap_size): #建立堆的起始索引 largest = index #左右孩子结点 left_child = 2 * index + 1 right_child = 2* index + 2 #判断左右孩子索引是否超出索引;并且比较值的大小 ...原创 2020-01-18 20:30:57 · 214 阅读 · 0 评论 -
python插入排序、快速排序
'''插入排序'''def insertion(mylist): #从右边的无序数组中去除多少个值执行当前过程 for i in range(len(mylist)): #内层循环的起始值 temp_index = i while temp_index > 0: #从右边的无序数组中取出第一个值,和前...原创 2020-01-18 20:28:29 · 236 阅读 · 0 评论 -
python冒泡排序、选择排序
'''冒泡排序'''def bubble(mylist): #使用双重循环;外层循环控制次数。内层循环比较大小 for i in range(len(mylist)): for j in range(i+1,len(mylist)): #如果前一个值大于后一个则交换前后值得顺序 if mylist[i] > ...原创 2020-01-18 20:25:27 · 235 阅读 · 0 评论 -
python中图的创建(邻接表)
本文使用的是列表存储的图结点,列表中的每一个元素是图的一个结点对象,其中有两部分:一个数据域、一个指针域;数据域存储当前结点的值,指针域存储的是和当前结点邻接的结点的位置(边学习边写,不足之处多多留言指点)'''图的邻接表方法表示'''#图的结点类class GraphNode(object): #初始化图的结点(图的结点有两部分:数据域、指针域) def __init_...原创 2020-01-15 22:58:43 · 4972 阅读 · 1 评论 -
python图的创建(邻接矩阵)
在python中的二维矩阵是使用两个列表完成的,该程序完成图的邻接矩阵表示也是使用同样的思想'''邻接矩阵法完成图的表示'''#创建图,输入图的顶点个数、顶点、以及创建邻接表和存储顶点的数组class Graph(object): def __init__(self): self._count = int(input('输入图的顶点的个数:')) ...原创 2020-01-15 22:53:34 · 15461 阅读 · 2 评论 -
python实现二叉树的基本操作(非递归前中后序、层次遍历)
主要实现二叉树的非递归前序、中序、后序、层次遍历,其中二叉树的后序遍历使用了两种方法实现(一:定义一个表示量来记录该节点是否被访问;二:使用两个栈完成遍历,其思想将非递归的前序(根左右)遍历先入栈,出栈之后在放入另外一个栈之后在出栈)'''二叉树结构的基本操作(添加元素,先序、中序、后序、层次遍历)非递归实现'''class TreeNode(object): #定义树的结点内容(...原创 2020-01-13 10:55:31 · 572 阅读 · 0 评论 -
python完成二叉树的基本操作(递归实现)
二叉树结构的基本操作(创建二叉树,先序、中序、后序、层次遍历)递归实现class TreeNode(object): #定义树的结点内容(数据、左右孩子) def __init__(self,_telem,_lchild = None,_rchild = None): self._telem = _telem self._lchild = _l...原创 2020-01-12 20:58:05 · 1295 阅读 · 0 评论 -
python实现队列的基本操作,出队、入队,计算队长
队列是数据结构中常用的一种类型,它和排队是情形一样,先进队列中的元素出队时一定是先出来的,定义一端为队首(队列元素出队的一端),另外一端为队尾(队列元素进队的一端);循环队列就是将队列的两个指针(首尾指针连接起来,可以更加方便进行操作)顺序队操作:class Queue(object): #初始化一个队列 def __init__(self): self.__list...原创 2020-01-11 21:35:47 · 11816 阅读 · 0 评论 -
python完成栈的基本操作,压栈,出栈、计算栈长
在python中不存在指针,所有需要进行链栈的操作时,自己初始化一个栈的结点类,其中定义栈每一个结点的属性,一个next,一个数据;后边的队列和二叉树的完成使用同样的原理,自己定义每一个数据结构的结点属性值顺序栈的操作'''栈的基本操作'''class StackList(object): def __init__(self): self._item = []...原创 2020-01-11 21:28:19 · 2976 阅读 · 0 评论 -
python完成链表的基本操作,增加元素、遍历、删除
单链表的完成:'''链表的完成'''#定义链表的结点class LinkNode(object): #node:元素;next:保存当前元素的下一个元素的地址 def __init__(self,ldata): self._ldata = ldata self._lnext = Noneclass Link(object): #初...原创 2020-01-11 21:21:29 · 1650 阅读 · 0 评论