
算法(golang实现)
月守护
卡拉卡拉
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
检查表达式中的括号是否匹配
借用栈结构 我们用栈来保存未匹配的左括号,从左到右依次扫描字符串。当扫描到左括号时,则将其压入栈中;当扫描到右括号时,从栈顶取出一个左括号。如果能够匹配,比如“(”跟“)”匹配,“[”跟“]”匹配,“{”跟“}”匹配,则继续扫描剩下的字符串。如果扫描的过程中,遇到不能配对的右括号,或者栈中没有数据,则说明为非法格式。当所有的括号都扫描完成之后,如果栈为空,则说明字符串为合法格式;否则,说明有未匹配的左括号,为非法格式。 package main import ( "errors" "fmt" ) t原创 2021-01-18 10:43:09 · 2089 阅读 · 0 评论 -
排序(二)--O( n^2)
冒泡排序 依次优化 func bubble_sort_v1(arrry []int) { for i := 0; i < len(arrry)-1; i++ { for j := 0; j < len(arrry)-1-i; j++ { if arrry[j] > arrry[j+1] { temp := arrry[j] arrry[j] = arrry[j+1] arrry[j+1] = temp } } } } func bubble原创 2020-12-16 23:13:18 · 128 阅读 · 0 评论 -
排序概述(一)
时间复杂度分类 1.时间复杂度为O(n^2)的排序算法 冒泡排序 选择排序 插入排序 希尔排序(希尔排序比较特殊,它的性能略优于O(n^2),但又比不上O(nlogn)) 2.时间复杂度为O(logn)的排序算法 快速排序 归并排序 堆排序 3.时间复杂度为线性的排序算法 计数排序 桶排序 基数排序 稳定性分类 排序算法根据稳定性,划分为稳定排序和不稳定排序。 如果值相等的元素在排序后仍然保持着排序前的顺序,则是稳定排序 如果值相等的元素在排序后打乱了排序前的顺序,则是不稳定排序 1.稳定排序原创 2020-12-02 23:06:21 · 94 阅读 · 0 评论