力扣做题
ZhuojunChen
这个作者很懒,什么都没留下…
展开
-
关于sort函数中的cmp参数的笔记(C++)
C++中sort函数是经常会用到的一个函数,主要的功能是排序,可以给数组,或者链表list、向量排序。sort(first_pointer,first_pointer+n,cmp)在三个参数中,前两个参数很好理解(第二个参数记住要是尾地址的下一个地址),第三个参数一直会忘记他的用法,因此今天写一篇做一个笔记。第三个参数默认可以不填,如果不填sort会默认按数组升序排序。当需要以一些特殊的方式,或者对集合中每个元素中的某个子元素进行排序时,需要自定义cmp,自定义的方式有两种:(1)另定义一原创 2021-07-10 18:49:41 · 949 阅读 · 0 评论 -
【排序算法】两种插入排序的思路与C++实现
插入排序是一种常见的排序方式,其原理是,从前往后按顺序选取一个元素,将其与之前的元素进行比较,插入到合适的位置,以此类推直到取完所有元素。具体来说,插入排序有两种实现方式:交换法插入排序:交换法插入排序的主要思路是先插入所选取元素,再和前面的元素比大小,通过不断交换的方式完成排序。vector<int> insertsort1(vector<int>& nums) { for (auto i = 1; i != nums.size(); i++) { int原创 2021-04-17 17:51:28 · 133 阅读 · 0 评论 -
【排序算法】二元选择排序(C++实现)
选择排序是一种常见的排序方法。它的主要思路是:遍历数组,每一次找出所遍历数组中的最小值或最大值,放在数组开头或者末尾,然后再遍历剩下的数组并找到最小值/最大值,直到遍历完为止。所谓二元选择排序,就是在遍历数组的过程中,同时寻找最小值和最大值,放在数组的开头和末尾,这样可以减少遍历次数,提高效率。具体代码实现如下:void select_sort(vector<int>& numset) { for (auto i = 0; i != numset.size() / 2; i++)原创 2021-04-17 12:03:24 · 412 阅读 · 0 评论 -
【排序算法】冒泡排序进阶版(C++)
冒泡排序是一种基础且常见的排序方法。其主要思路为从前到后遍历数组,一边比较一边向后两两交换,将最值冒泡到最后一位。然而,在遍历过程中,存在还没有遍历完整个数组就已经排序完成的情况。举个例子,如果需要排序的数组是[1,2,6,3],我们希望将其从小到大排序,在第一轮排序完成之后,数组改变为[1,2,3,6],此时已排序完成,应当及时停止,不再进行之后的排序。针对这种情况,可以使用一个变量记录当前轮次的比较是否有交换发生,若没有,则代表数组已经有序,则停止排序。具体实现代码如下:void bubble_so原创 2021-04-17 10:11:35 · 331 阅读 · 0 评论 -
关于排序中数组元素前后交换的小技巧
我们知道,交换数组中的元素在很多情况下都会用到,一般的方式如下:int temp = a;a = b;b = temp;然而,如果要在不引入第三个中间变量的情况下实现交换,要怎么做呢?可以用先加后减或者位运算的方式完成数字的交换。先加后减:b = b + a;a = b - a;b = b - a;位运算:a = a ^ b;b = b ^ a;a = a ^ b;...原创 2021-04-17 00:40:53 · 642 阅读 · 0 评论