Java是一種面向?qū)ο缶幊陶Z言,擁有豐富的數(shù)據(jù)結(jié)構(gòu)和算法庫。在開發(fā)過程中,常常需要使用一些常見的算法,如排序、查找、哈希等。下面就來介紹一些Java中常用算法的分析和實(shí)現(xiàn)。
1. 排序算法
/** * 快速排序 * * @param arr 待排序數(shù)組 * @param low 起始位置 * @param high 結(jié)束位置 */ public static void quickSort(int[] arr, int low,int high){ if(low< high){ int start = low; int end = high; int key = arr[low]; while(start< end){ while(start< end && arr[end] >= key){ end--; } if(start< end){ arr[start++] = arr[end]; } while(start< end && arr[start]< key){ start++; } if(start< end){ arr[end--] = arr[start]; } } arr[start] = key; quickSort(arr, low, start-1); quickSort(arr, start+1, high); } }
2. 查找算法
/** * 二分查找算法 * * @param arr 待查找數(shù)組 * @param value 要查找的值 * @return 找到就返回位置,沒有找到就返回-1 */ public static int binarySearch(int[] arr, int value) { int left = 0; int right = arr.length - 1; while (left<= right) { int mid = (left + right) / 2; if (arr[mid] == value) { return mid; } else if (arr[mid]< value) { left = mid + 1; } else { right = mid - 1; } } return -1; }
3. 哈希算法
/** * 哈希函數(shù) * * @param str 輸入字符串 * @param mod 取模數(shù) * @return hash值 */ public static long hashString(String str, long mod) { long hash = 0; for (int i = 0; i< str.length(); i++) { hash = (hash * 31 + str.charAt(i)) % mod; } return hash; }
以上就是Java中常用算法的分析和實(shí)現(xiàn),希望對大家有所幫助。