當(dāng)前位置:
首頁(yè) >
算法杂项~
發(fā)布時(shí)間:2025/6/17
37
豆豆
文章目錄
- 前言
- 一、O(logn)算法
- 1.1、折半/二分查找(binary search)
- 1.2、求最大公因數(shù)
- 1.3、冪運(yùn)算
- 總結(jié)
前言
??????隨便列出一些常見(jiàn)的算法。
一、O(logn)算法
??????如果一個(gè)算法用常數(shù)時(shí)間將問(wèn)題的大小削減為其一部分(一般為其的1/2),那么該算法的時(shí)間復(fù)雜度為 O(logn)。
1.1、折半/二分查找(binary search)
??????假設(shè)對(duì)一個(gè)已經(jīng)排好序的 int 數(shù)組 array,求某個(gè)元素 n 在該數(shù)組的下標(biāo):
public static int binarySearch(int[] array,int n){int left=0,right=array.length-1,mid;while(left<=right){mid=(left+right)/2;if(array[mid]==n)return mid;else if(array[mid]<n)left=mid+1;elseright=mid-1;}return -1;}1.2、求最大公因數(shù)
??????歐幾里得算法求最大公因數(shù):
public static int gcd(int m,int n){while(n!=0){ //如果 m 小于 n,那么第一次循環(huán)會(huì)交換 m 和 n 的值。int y=m%n;m=n;n=y;}return m;}1.3、冪運(yùn)算
??????代碼如下:
public static int pow(int base,int e){//大致確定結(jié)果在 int 范圍內(nèi),如果數(shù)字很大,可能需要采用別的表示方法來(lái)模擬(比如字符串)。if(e==0)return 1;if(e%2==0)return pow(base*base,e/2);elsereturn pow(base*base,e/2)*base;}??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
總結(jié)
??????未完~
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: LeetCode算法题3:求最大子序列和
- 下一篇: ArrayList 和 LinkedLi