算法杂项~
文章目錄
- 前言
- 一、O(logn)算法
- 1.1、折半/二分查找(binary search)
- 1.2、求最大公因數
- 1.3、冪運算
- 總結
前言
??????隨便列出一些常見的算法。
一、O(logn)算法
??????如果一個算法用常數時間將問題的大小削減為其一部分(一般為其的1/2),那么該算法的時間復雜度為 O(logn)。
1.1、折半/二分查找(binary search)
??????假設對一個已經排好序的 int 數組 array,求某個元素 n 在該數組的下標:
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、求最大公因數
??????歐幾里得算法求最大公因數:
public static int gcd(int m,int n){while(n!=0){ //如果 m 小于 n,那么第一次循環會交換 m 和 n 的值。int y=m%n;m=n;n=y;}return m;}1.3、冪運算
??????代碼如下:
public static int pow(int base,int e){//大致確定結果在 int 范圍內,如果數字很大,可能需要采用別的表示方法來模擬(比如字符串)。if(e==0)return 1;if(e%2==0)return pow(base*base,e/2);elsereturn pow(base*base,e/2)*base;}??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
??????
總結
??????未完~
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: LeetCode算法题3:求最大子序列和
- 下一篇: Java 集合中的方法性能分析