1. 快速排序不稳定的排序。2. 希尔排序直接插入排序的改进,是稳定的排序。3.
直接插入排序稳定的排序。
分类:
其他好文 时间:
2014-05-05 23:12:36
阅读次数:
246
//快速排序#includevoid QuickSort(int R[],int low,int
high){ int i=low,j=high; int pivot; if(lowpivot) j--; R[i]=R[j]; ...
分类:
其他好文 时间:
2014-05-03 23:18:57
阅读次数:
322
直接贴代码func sliceModify(slice []int) { //
slice[0] = 88 slice = append(slice, 6)}func main() { slice := []int{1, 2, 3, 4,
5} sliceModify(sli...
分类:
其他好文 时间:
2014-05-03 23:17:56
阅读次数:
393
BufferGo标准库Buffer是一个可变大小的字节缓冲区,可以用Wirte和Read方法操作它,在Go标准库中,定义了如下关于Buffer的数据结构。typeBufferstruct{
buf[]byte//contentsarethebytesbuf[off:len(buf)]
offint//readat&buf[off],writeat&buf[len(buf)]
runeBytes[utf8...
分类:
其他好文 时间:
2014-05-03 01:30:02
阅读次数:
539
一、奇怪的现象
研究快速排序很久了,发现一个古怪的实情:这算法描述起来很简单,写一个正确的出来实在不容易.写一个优秀的快速排序算法更是难上加难.也难怪该算法提出来过了很久才有人写出一个正确的算法,过了很久才优秀的版本出来.二、原理描述从数列中挑出一个元素,称为
"基准"(pivot),重新排序数列....
分类:
其他好文 时间:
2014-05-02 15:57:59
阅读次数:
688
所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作...
分类:
编程语言 时间:
2014-05-01 22:02:12
阅读次数:
360
在初次接触排序算法稳定性这个概念时,我一直认为复杂度为O(n2)的算法是稳定的,复杂度为O(nlogn)的算法是不稳定的。当时是这样理解的,复杂度为O(n2)的算法不可能再坏,而复杂度为O(nlogn)的算法在极端情况下可能会退化为O(n2),例如快速排序。但其实这是错误的,稳定性的概念远没有这么复杂,它只表示两个值相同的元素在排序前后是否有位置变化。如果前后位置变化,则排序算法是稳定的,否则是不...
分类:
其他好文 时间:
2014-05-01 17:20:58
阅读次数:
278
主定理
主定理最早出现在《算法导论》中,提供了分治方法带来的递归表达式的渐近复杂度分析。
规模为n的问题通过分治,得到a个规模为n/b的问题,每次递归带来的额外计算为c(n^d)
T(n) <= aT(n/b)+c(n^d)
那么就可以得到问题的复杂度为:...
分类:
其他好文 时间:
2014-04-30 22:44:38
阅读次数:
435
面试也是一门学问,在面试之前做好充分的准备则是成功的必须条件,而程序员在代码面试时,常会遇到编写算法的相关问题,比如排序、二叉树遍历等等。
在程序员的职业生涯中,算法亦算是一门基础课程,尤其是在面试的时候,很多公司都会让程序员编写一些算法实例,例如快速排序、二叉树查找等等。
本文总结了程序员在代码面试中最常遇到的10大算法类型,想要真正了解这些算法的原理,还需程序员们花些功夫。...
分类:
编程语言 时间:
2014-04-30 22:11:39
阅读次数:
356
如果你成天与编程为伍,那么并发这个名词对你而言一定特别耳熟。需要并发的场景太多了,例如一个聊天程序,如果你想让这个聊天程序能够同时接收信息和发送信息,就一定会用到并发,无论是那是什么样的并发。
并发的意义就是:让一个程序同时做多件事情!
理解这一点非常重要,是的,并发的目的只是为了能让程序同时做另一件事情而已,并发的目的并不是让程序运行的更快(如果是多核处理器,而且任务可以分成相互独立...
分类:
其他好文 时间:
2014-04-29 13:32:21
阅读次数:
378