算法代码块总结(持续更新)
生活随笔
收集整理的這篇文章主要介紹了
算法代码块总结(持续更新)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
算法代碼塊
素數
/*** 判斷素數代碼塊* @param n 帶判斷數* @return 判斷結果*/ public static boolean isPrime(long n) {if (n <= 3) {return n > 1;}if (n % 2 == 0 || n % 3 == 0) {return false;}long k = (long) Math.sqrt(n) + 1;for (long i = 5; i < k; i += 6) {if (n % i == 0 || n % (i + 2) == 0) {return false;}}return true; }打印層數為(2n-1)形狀為(*)的沙漏
static void doPrint(int c, String s) {for (int i = 0; i < c - 1; i++) {int sum = 2 * (c - i) - 1;int j = 0;while (sum > 0) {if (j < i) {System.out.print(" ");} else {System.out.print(s);sum--;}j++;}System.out.println();}for (int i = 1; i <= c; i++) {int sum = 2 * i - 1;int j = 0;while (sum > 0) {if (j < (c - i)) {System.out.print(" ");} else {System.out.print(s);sum--;}j++;}System.out.println();} }用法:doPrint(3,""); --------> 打印5層符號為的沙漏
絕對值排序(從大到小)
/*** 從大到小進行絕對值排序* n為數組大小*/ for (int i = 0; i < n - 1; i++) {int max = i;for (int j = i + 1; j < n; j++) {if (Math.abs(array[j]) > Math.abs(array[max])) {max = j;}}if (max != i) {int t = array[i];array[i] = array[max];array[max] = t;} }最小公倍數
/*** 獲取兩個數的最大公約數** @param num1 數1* @param num2 數2* @return 最大公約數*/public static long getZuiDaGongYueShu(long num1, long num2) {long temp = 0;temp = num1 % num2;if (temp == 0) return num2;else return getZuiDaGongYueShu(num2, temp);}大數相加Java實現
/*** 用字符串模擬兩個大數相加** @param addend 加數1* @param augend 加數2* @return 相加結果*/public static String getResult(String addend, String augend) {StringBuffer sb = new StringBuffer();int length1 = addend.length();int length2 = augend.length();int temp = 0;if (length1 < length2) {//2比1長String tempStr = augend;augend = addend;addend = tempStr;temp = length2;length2 = length1;length1 = temp;temp = 0;}for (int i = length2 - 1, j = length1 - 1; i >= 0 && j >= 0; i--, j--) {int a = addend.charAt(j) - '0';int b = augend.charAt(i) - '0';temp += a + b;sb.insert(0, temp % 10);temp /= 10;}if (length1 != length2) {for (int i = length1 - length2 - 1; i >= 0; i--) {temp += addend.charAt(i) - '0';sb.insert(0, temp % 10);temp /= 10;}}if (temp > 0) {sb.insert(0, temp);}return sb.toString();}快速排序
/*** 快速排序* @param array [description]* @param left [description]* @param right [description]*/public static void quickSort(int[] array, int left, int right) {if (left > right) {return;}//設定基準數int temp = array[left];//設置哨兵int i = left;int j = right;while (i != j) {//順序很重要,要想從右往左找while (array[j] >= temp && i < j) {j--;}//再從左往右找while (array[i] <= temp && i < j) {i++;}//交換兩個哨兵在數組中的位置//兩個哨兵沒有相遇if (i < j) {int t = array[i];array[i] = array[j];array[j] = t;}}//最終將基準數歸位array[left] = array[i];array[i] = temp;//繼續處理左邊的,這是一個遞歸的過程quickSort(array, left, i - 1);//繼續處理右邊的,這是一個遞歸的過程quickSort(array, i + 1, right); }總結
以上是生活随笔為你收集整理的算法代码块总结(持续更新)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉树的创建和遍历-C语言实现
- 下一篇: 约瑟夫环问题(带密码)