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