
数据结构与算法
RunFromHere
AI领域探索
展开
-
Golang实现快速排序
Golang实现快速排序关键词:快速 排序 快速排序 算法 比较 基准 golang go**算法复杂度:**O(nlogn)代码://Normal quick sortfunc QuickSort(list []int) []int { if len(list) < 2 { return list } pivot := list[0] var less []int var greater []int for _,v := range l原创 2020-12-29 19:59:20 · 335 阅读 · 0 评论 -
Python实现快速排序
Python实现快速排序关键词:快速 排序 快速排序 算法 比较 基准 python**算法复杂度:**O(nlogn)代码:def quickSort(array): if len(array) < 2: return array else: pivot = array[0] less = [i for i in array[1:] if i <= pivot] greater = [i for i i原创 2020-12-29 19:59:12 · 278 阅读 · 0 评论 -
Golang实现选择排序
Golang实现选择排序关键词:选择排序 排序 算法 寻找 比较 golang go 实现**算法复杂度:**O(n^2)代码:func selectionSort(list []int) []int { newList := make([]int, 0) for i:=0; i< len(list); i++ { smallIndex := findSmallestIndex(list) newList = append(newList, list[sm原创 2020-12-29 19:59:06 · 214 阅读 · 0 评论 -
Python实现选择排序
Python实现选择排序关键词:选择排序 排序 算法 寻找 比较 python 实现**算法复杂度:**O(n^2)代码:def findSmallest(arr): smallest = arr[0] smallest_index = 0 for i in range(1, len(arr)): if arr[i] < smallest: smallest = arr[i] smallest_index原创 2020-12-29 19:58:51 · 171 阅读 · 0 评论 -
Golang实现二分查找
Golang实现二分查找关键词:关键词:算法 查找 基础 复杂度 二分 golang go 实现**条件:**带查找的数据需有序算法复杂度: O(log2(n))代码:// binary search works Only when the list is orderedfunc BinarySearch(list []int, item int) int { var low int var high int = len(list) - 1 for ; low <=原创 2020-12-29 19:55:12 · 222 阅读 · 0 评论 -
Python实现二分查找
Python实现二分查找关键词:算法 查找 基础 复杂度 二分 python 实现**条件:**带查找的数据需有序算法复杂度: O(log2(n))代码:def binary_search(list, item): low = 0 high = len(list) - 1 while low <= high mid = (low+high)/2 guess = list[mid] if guess == item return mid if gu原创 2020-12-29 19:54:40 · 265 阅读 · 0 评论 -
算法之给定一个n*m的格子或棋盘,如何计算从左上角走到右下角的走法总数?(Java)
文章目录给定一个M*N的格子或棋盘,求走法总数1.题目2.例子3.解析4.递归求法,时间复杂度O(2^n)5.非递归求法,时间复杂度O(n)给定一个M*N的格子或棋盘,求走法总数1.题目给定一个n*m的格子或棋盘,问从左上角走到右下角的走法总数(每次只能向右或向下移动一个方格边长的距离。2.例子输入:7 5输出:7923.解析不管怎么走,最终都是要走 m+n 步。4.递...原创 2018-09-30 16:47:19 · 14724 阅读 · 0 评论 -
算法之斐波那契数列如何求第n个值与前n项和?(Java)
文章目录斐波那契数列题目例子解析递归求法,时间复杂度O(2^n)非递归求法,时间复杂度O(n)斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n&amp;amp;amp;gt;=3,n∈N*)。题目1.求斐波那契数列的第n项的值2.求斐波那契数列前n项的和例子...原创 2018-09-30 16:40:42 · 17119 阅读 · 0 评论 -
算法之约瑟夫环问题:有n个人排成一列或是一圈,从编号为k的人开始报数,数到m的那个人出列。(Java)
文章目录约瑟夫环问题1.题目2.解析3.总代码约瑟夫环问题约瑟夫环描述:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。1.题目约瑟夫环问题,输入人数n,第m个人出列,最后一个人的编号是多少...原创 2018-09-30 15:58:44 · 18364 阅读 · 3 评论 -
算法之时间复杂度和空间复杂度是什么?
文章目录一、算法的时间复杂度定义二、推导大O阶方法三、推导示例1、常数阶2、线性阶3、对数阶4、平方阶5、立方阶四、常见的时间复杂度五、最坏情况与平均情况六、算法空间复杂度一、算法的时间复杂度定义在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度。记作:T(n)=O(f(n))。它表示...原创 2018-09-29 21:31:41 · 3210 阅读 · 1 评论 -
算法之如何顺时针打印字母表?(输入矩阵的长和宽,Java实现)
文章目录3.输入矩阵的长和宽,顺时针打印字母表。解析:Main方法getUseAlphabets方法printMatrix方法完整代码3.输入矩阵的长和宽,顺时针打印字母表。例:输入:5,6输出:A B C D E FR S T U V GQ B C D W HP A Z Y X IO N M L K J解析:1.首先我们要有一个字母表,然后我们要知道这次顺时针打印需要用...原创 2018-09-28 23:00:13 · 883 阅读 · 2 评论 -
算法之如何找出字符串中第一个只出现一次的字符?(Java实现)剑指offer
文章目录1.在字符串中找出第一个只出现一次的字符。解析:第一种第二种第三种1.在字符串中找出第一个只出现一次的字符。例:输入:“abbaccdeff”输出:‘d’解析:有三种方法第一种:按顺序一个个把字符抽出来与后面的字符作对比。 时间复杂度O(n^2)第二种:用类似哈希表的方式用来统计字符出现的次数。 时间复杂度O(n)第三种:直接用哈希表的方式用来统计字符出现的字数。...原创 2018-09-28 22:57:17 · 10101 阅读 · 7 评论 -
算法之基本的排序算法
排序算法复杂度(空间+时间)1.排序算法分为 非线性时间比较类排序 与 线性时间非比较类排序2.非线性时间比较类排序算法主要有四大类:交换排序、插入排序、选择排序、归并排序交换排序:冒泡排序、快速排序插入排序:简单插入排序、希尔排序选择排序:简单选择排序、堆排序归并排序:二路归并排序、多路归并排序3.线性时间非比较类排序主要有三大类:计数排序、基数排序、桶排序...原创 2018-09-26 11:23:14 · 160 阅读 · 0 评论 -
算法之如何实现单向链表的反转?(3种方法,Java语言)
单向链表的反转单链表的反转有三种实现方法遍历法(结构清晰易懂,时间复杂度低)递归法(代码简洁,但时间复杂度高,尤其是在链表长度超过12000之后)内置类法(代码简洁,使用内置LinkedList类)1.遍历法(关键代码) static Node reverse(Node head) { Node pre = head; Node cur = ...原创 2018-09-26 11:22:10 · 2788 阅读 · 0 评论 -
算法之如何实现线性表的顺序存储?(Java)
Java实现线性表的顺序存储Java实现线性表的顺序存储1.基本思路2.实际功能列表3.代码块3.1要点3.1.1扩大数组:3.1.2插入功能(增)3.1.3删除功能(删):3.2基本功能3.3测试代码3.4输出示例4.线性表顺序存储的优缺点1.基本思路1.基本数据的算法实现基本包括四个最重要的功能:增、删、改、查 2.在这个例子...原创 2018-04-26 14:51:11 · 340 阅读 · 0 评论 -
算法之如何实现单链表插入删除?(Java)
本次实现单链表基本功能共分为1. 节点类 2. 链表类 3. 测试类原创 2016-09-29 21:29:15 · 1305 阅读 · 0 评论