C++面试的重要考点之一,而虚函数是实现多态的基础。 面试题 19:链表和数组有什么区别 数组和链表有以下几点不同: (1) 存储形式:数组是一块连续的空间,声明时就要确定长度。链表是一块可不连续的动态空间,长度可变,每个结点要保存相邻结点指针。 (2) 数据查找:数组的线性查找速度快,查找操作直接使用偏移地址。链表...
选择排序(Select Sort) 是直观的排序,通过确定一个 Key 最大或最小值,再从带排序的的数中找出最大或最小的交换到对应位置。再选择次之。双重循环时间复杂度为O(n^2) 算法描述: 在一个长度为 N 的无序数组中,第一次遍历 n-1 个数找到最小的和第一个数交换。 第二次从下一个数开始遍历 n-2 个数...
而选择排序算法的改进在于:先并不急于调换位置,先从A[1]开始逐个检查,看哪个数最小就记下该数所在的位置P,等一躺扫描完毕,再把A[P]和A[1]对调,这时A[1]到A[10]中最小的数据就换到了最前面的位置 所以,选择排序每扫描一遍数组,只需要一次真正的交换,而冒泡可能需要很多次。比较的次数是一样的。 面试...
面试题17:链表和数组有什么区别? 数组和链表有以下几点不同:1、存储形式:数组是一块连续的空间,声明时就要确定长度。链表是一块可不连续的动态空间,长度可变,每个结点要保存相邻结点指针。 2、数据查找:数组的线性查找速度快,查找操作直接使用偏移地址。链表需要按顺序检索结点,效率低。 3、数据插入或删除:链表可以...
A)希尔排序 B)冒泡排序 C)插入排序 D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为___。 A)2 B)3 C)4 D)5 答案:C 评析:二分法查找...
在插入排序中,如果待排序列中的某个元素,距离有序数列中待插入位置非常远,就需要比较很多次才可以到达插入位置,这是因为待插入元素局部非常无序,比如说[2, 3, 4, 5, 6, 7, 8, 1, ...],我们要插入1,就必须将1和前面的2-8每个值都比较一下,就是因为1附近非常无序,想象一下,如果待插入元素附近比较...
(2)我们开始遍历没有排序的数组,规则是:我们遍历到的数字作为array数组的下标,然后对应下标加1,比如:我们遍历到数字5,那么array[5]的值加1,如果遍历数字是13,那么array[13]的值加1,这样把需要排序的数字都遍历完一遍。(3)排序最后一步就是打印我们array数组中值不为0的下标,因为我们初始化的时候...
A)希尔排序 B)冒泡排序 C)插入排序 D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进行插入排序。 (4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为___。 A)2 B)3 C)4 D)5 答案:C 评析:二分法查找...
c_c++面试100题
面试题 一:从尾到头打印单链表。 void SLitsPrintTailToHead(SListNode* pHead)//非递归算法(利用俩个指针一个定义到尾部p1,另一个定义到头开始循环p2,每当p2循环到尾部时,输出p2的值,让尾部p1指向p2.再次开始循环,以此往复。) { SListNode *cur=NULL; ...