
数据结构与算法
傲傲娇
努力,奋斗
展开
-
算法——出现奇数次的数字
1.给定一个数组,其中只有一个数出现奇数次,其他都出现偶数次,打印奇数次的数。2.给定一个数组,其中有两个数出现奇数次,其他都出现偶数次,打印奇数次的数。解法:使用位运算前置知识 a^a = 0、a^0=a、a^b!=0、a^b^c = a^(b^c)、a^b^c = b^c^a题1代码:public static void printOddNum(int[] a){ int eor = 0; for (int i=0;i<a.length ;i++){ eor = e.原创 2021-09-03 11:47:22 · 1738 阅读 · 2 评论 -
算法——消失的数字
从 0,1,2,...,n 这 n+1 个数中选择 n 个数,选择出的数字依然保持有序,找出这 n 个数中缺失的那个数,要求O(n) 或 O(log(n)) 并尽可能小。方法1:二分查找过程如下:I mid j↓↓↓[ 0, 1, 2, 3, 5, 6, 7 ] 此时a[mid]=mid,i=mid+1I mid j↓↓↓[ 0, 1, 2, 3, 5, 6, ...原创 2021-09-03 10:48:23 · 220 阅读 · 0 评论 -
算法——最大公约数
如果有一个自然数 a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。输入a和b,返回a和b的最大公约数。辗转相除法(又称欧几里得算法)举例:例如求434和652的最大公约数,用欧几里得算法,是这样进行的434%652=434 交换除数为652,被除数为余数434652%434=218 交换除数为434,被除数为余数218434%218=216 交换除数为2...原创 2021-09-03 10:22:19 · 5252 阅读 · 0 评论 -
经典算法——排序算法
冒泡排序排序原理:比较相邻的元素,如果前一个元素比后一个元素大,就交换两个元素的位置。 对每一对相邻的元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置为最大值。冒泡排序API设计类名 Bubble 描述 构造方法 Bubble() 创建Bubble对象 成员方法 public static void sort(Comparable[] a) 对数组内的元素进行排序 private static boolean grea.原创 2021-09-01 16:27:32 · 2257 阅读 · 0 评论