随笔分类 -  算法

摘要:位运算之>>——右移 右移填充的数: 有符号数的话是最高位的那个数,正数为1,负数为0; 无符号数填充的是0,无论正负; 阅读全文 »
posted @ 2022-07-28 19:00 西北小蚂蚁 阅读(87) 评论(0) 推荐(0) 编辑
摘要:1、二进制数按位依次取出 代码: for(i = 0; i<32; i++) { a[i] = val & 1; val = val >> 1; } 2、清除二进制最低位的1 x = x & (x-1) 3、综合 阅读全文 »
posted @ 2022-07-25 13:55 西北小蚂蚁 阅读(27) 评论(0) 推荐(0) 编辑
摘要:异或: 两数异或相同为0不同为1; 异或的性质: 1、任何数与自身异或都是0:a ^ a = 0; 2、任何数与0异或都是本身:a ^ 0 = a; 3、异或运算满足交换律和结合律:a ^ b ^ a = a ^ a ^ b = 0 ^ b = b; 4、a^b=c -> a^b^b=c^b -> 阅读全文 »
posted @ 2022-07-25 11:42 西北小蚂蚁 阅读(1841) 评论(0) 推荐(0) 编辑
摘要:经典排序算法之——堆排序 时间复杂度: O(nlogn) 空间复杂度: O(1) 什么时候用堆排序: 1、如果你要在很多元素中找很少几个top K的元素,或者在一个巨大的数据流里找到top K,堆排序更省地方。 2、另外一个适合用heap的场合是优先队列,需要在一组不停更新的数据中不停地找最大/小元 阅读全文 »
posted @ 2022-07-19 12:38 西北小蚂蚁 阅读(80) 评论(0) 推荐(0) 编辑
摘要:经典排序算法之——插入排序 时间复杂度: 最好:O(n) 最坏:O(n^2) 空间复杂度: O(1) 什么时候选择插入排序: 1、n较小 2、在要排序的序列已经将顺序大致排好的时候,或者说每一个数都在他应该在的位置左右的时候用插入排序较好 图解: 代码: #include <stdio.h> #de 阅读全文 »
posted @ 2022-07-19 10:16 西北小蚂蚁 阅读(114) 评论(0) 推荐(0) 编辑
摘要:经典排序算法之——快排 时间复杂度: O(nlogn) 空间复杂度: O(log2n) 什么时候用快排 1、n较大 2、快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短; 图解: 代码: #include <stdio.h> #define 阅读全文 »
posted @ 2022-07-18 17:04 西北小蚂蚁 阅读(376) 评论(0) 推荐(0) 编辑
摘要:冒泡排序的格式: #include <stdio.h> #define N 4 int main(void) { int a[N]= {1,3,4,2},i,j,x; for(i = 0;i < N-1;i++) { for(j = 0;j < N-i-1;j++) { if(a[j] > a[j+ 阅读全文 »
posted @ 2022-03-02 11:25 西北小蚂蚁 阅读(31) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示