2013年1月30日

c++ const 引用

摘要: const引用是指向const对象的引用。const int i = 10;const int &ref = i;可以读取ref,但不能修改。这样做是有意义的,因为i本身就不可修改,当然也不能通过ref来修改了。所以也就有将const变量赋值给非const引用是非法的。int &ref1 = i; // error: nonconst reference to a const object非const引用是指向非const类型变量的引用。const引用可以初始化为不同类型的对象或者右值(如字面值常量),但非const引用不可以。// legal for const refere 阅读全文

posted @ 2013-01-30 21:30 zhuyf87 阅读(1201) 评论(0) 推荐(0) 编辑

尾递归(Tail recursion / Tail call)

摘要: 递归与尾递归关于递归操作,简单地说,一个函数直接或间接地调用自身,是为直接或间接递归。例如,可以使用递归来计算一个单向链表的长度:public static int GetLengthRecursively(Node head){ if (head == null) return 0; return GetLengthRecursively(head.Next) + 1;}在调用时,GetLengthRecursively方法会不断调用自身,直至满足递归出口。对递归有些了解的朋友一定猜得到,如果单向链表十分长,那么上面这个方法就可能会遇到栈溢出,也就是抛出StackOverflow... 阅读全文

posted @ 2013-01-30 17:04 zhuyf87 阅读(3343) 评论(1) 推荐(0) 编辑

快速排序

摘要: 快速排序算法被列为20世纪十大算法之一,由Tony Hoare设计。在c++的STL、Java SDK和.net framework中都有各自的实现版本,可见其应用非常广泛。基本思想通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。所以快速排序的基本步骤如下:1. 从数列中挑出一个元素,称为 "基准"(pivot)。2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分割结束之后,该基准就处于数列的中间 阅读全文

posted @ 2013-01-30 11:29 zhuyf87 阅读(435) 评论(0) 推荐(0) 编辑

白话算法 快速排序

摘要: 原文地址:http://blog.csdn.net/morewindows/article/details/6684558快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因此本人就自己的理解对快速排序作了下白话解释,希望对大家理解有帮助,达到快速排序,快速搞定。快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。 阅读全文

posted @ 2013-01-30 10:09 zhuyf87 阅读(265) 评论(0) 推荐(0) 编辑

导航