Golang排序算法-希尔排序
原创 Golang排序算法-希尔排序
什么是希尔排序(Shellsort)希尔排序是插入排序的一种优化算法,先来看百度百科的定义:希尔排序(Shell’sSort)是插入排序的一种又称“缩小增量排序”(DiminishingIncrementSort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因
Golang排序算法-归并排序
原创 Golang排序算法-归并排序
前言归并排序算法是一个O(nlogn)级别的算法。这种算法体现了“分而治之”的算法思想,是一个可以提供使用的工具,意思是,以后遇到新的问题,可以先自问一下:分而治之能解决吗?这一篇,我们先讨论实践这一思想的算法之一:归并排序算法。所谓归并排序算法:是建立在归并操作上的一种有效的排序算法,该算
Golang排序算法-冒泡排序优化之四
原创 Golang排序算法-冒泡排序优化之四
前言上一篇http://www.haodaquan.com/140我们一起讨论了冒泡算法的第三种优化方式:即找出不需要排序的索引,作为内层循环的边界,这次讨论一个冒泡排序的优化变种:鸡尾酒排序法。所谓鸡尾酒排序法:鸡尾酒排序也就是定向冒泡排序,鸡尾酒搅拌排序,搅拌排序(也可以视作选择排序的一
Golang排序算法-冒泡排序优化之三
原创 Golang排序算法-冒泡排序优化之三
前言上一篇http://www.haodaquan.com/139我们一起讨论了冒泡算法的第二种优化方式:提前结束外层循环。并且也加上了第一种优化方式,提前结束内层循环,但是,这种算法对于反序排列的元素(如:9,8,7,6,5,4,3,2,1)排序,效率低下。分析假设:有一个数组[7,1,2
Golang排序算法-冒泡排序优化之一
原创 Golang排序算法-冒泡排序优化之一
前言上一篇:http://www.haodaquan.com/110介绍了冒泡排序算法,如果单纯的背诵算法的代码,那将是一件枯燥的事情,算法的乐趣在于可以不断的优化,不断的提高算法的速度,这是一件很美妙又有挑战的事情。所以,这里我们试图改进冒泡排序,看是否有更优秀的解法。分析对于冒泡算法,目
Golang排序算法-冒泡排序优化之二
原创 Golang排序算法-冒泡排序优化之二
前言上一篇:http://www.haodaquan.com/139介绍了冒泡排序算法的一种优化方法,那就是我们根据冒泡排序的特点,减少了内层循环次数,从而提高了算法的执行速度,那外层循环能否也可以减少一下循环次数呢?分析我们假设m个元素需要排序,当我们进行到i次排序的时候,如果发现内层循环
架构总结:架构设计的五个核心要素
转载 架构总结:架构设计的五个核心要素
架构中五个重要的核心指标,分别是性能、可用性、伸缩性、扩展性和安全性这5个架构指标一、性能性能就是核心要素之一,不然我为什么架构设计?随随便便一个lowlow的系统上线就好了。所以性能优化是很多小公司卖不去过的坎。这么说吧,当然优化网站性能的手段也非常多:(1)web前端性能优化:浏览器访问
微服务架构-设计总结
转载 微服务架构-设计总结
[TOC]一、微服务架构介绍微服务架构(MicroserviceArchitecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散
Golang排序算法-快速排序
原创 Golang排序算法-快速排序
什么是快速排序快速排序简单的说就是选择一个基准,将比起大的数放在一边,小的数放到另一边。对这个数的两边再递归上述方法时间复杂度时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性复杂性O(nlog2n)O(n^2)O(nlog2n)O(nlog2n)不稳定较复杂基本思想1、
Golang排序算法-插入排序
原创 Golang排序算法-插入排序
什么是插入排序顺序从序列中取一个数与左侧的元素们做比较,如果左侧的元素比取的数大,就向右移,直到把取的数插入到不小于左侧元素的位置处。此种排序方法类似于你在打扑克牌的时候,整理纸牌顺序的做法。时间复杂度时间复杂度为O(n^2)/********************************