数组的算法
數組的算法
在我們計算機界, 簡稱機界, 有這么一句話, “程序是由數據結構+算法組成的.”. 數據結構我們后面還會給大家慢慢普及, 那算法呢? 已經學了這么多了, 該來點兒邏輯思維強一點的東西了. 也是給自己設置的一個小小障礙吧. 數組學完了, 很簡單的一個知識點. 但是, 學完數組不講一點兒算法, 總覺著心里過不去, 好像少了一點兒什么東西一樣. 那本節就給大家講一丟丟算法1: 質數
質數: 只能被1和自身整除的數 思路: 用戶任意輸入一個數字n, 假設n=7, 如何判斷7是否是質數呢? 既然概念上講只能被1和自身整除, 那我們就從2開始除. 看是否能整除. 如果能整除, 一定不是質數. 如果不能整除, 繼續除以3. 以此類推. 一直除到6. 也就是n-1 如果在這期間. 沒有人能夠被整除. 這個數一定是質數. Scanner sc = new Scanner(System.in); System.out.println("請輸入一個數字"); int n = sc.nextInt(); boolean flag = true; for (int i = 2; i < n; i++) {if (n % i == 0) {flag = false;break;} } if (flag) {System.out.println("是質數"); } else {System.out.println("不是質數"); }算法2: 冒泡排序
排序算法永遠是程序員的痛. 我們今天介紹一個入門算法 我們把算法分為三部分: 如何實現兩個數互換 使用交換的方式把數組中最大的數移動到數組的最后 不停的重復第二步. 第一步, 交換: 有變量a, 和變量b. 想要實現互換. 并不是一件容易的事. 先看錯誤示范:int a = 10;int b = 20;a = b;b = a;System.out.println(a); // 20System.out.println(b); // 20為什么會這樣呢? a = b的時候是把b的值賦值給a. 那a原來的值就沒了….所以最后的結果都是20 正確的交換算法: int a = 10;int b = 20;int c = a; // 引入中間變量a = b;b = c;System.out.println(a);System.out.println(b);?完整代碼
int[] arr = {1, 55, 2, 17, 8, 12, 5}; for (int i = 0; i < arr.length - 1; i++) { //要移動多少次for (int j = 0; j < arr.length - i - 1; j++) { //每次要比較的范圍if (arr[j] > arr[j + 1]) {int c = arr[j]; //大的數arr[j] = arr[j + 1]; //交換arr[j + 1] = c;}} }System.out.println("冒泡排序完成:"); // System.out.println(arr); for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]); }算法3: 求數組中最大的數
int[] arr = {1,55,2,17, 8,12,5};// 假設第0個元素就是最大值int max = arr[0];// 判斷是不是有比最大值還大的值for(int i = 0 ; i < arr.length; i++){if(arr[i] > max){max = arr[i];}}System.out.println("最大值是:" + max);算法4: 計算平方和
int[] arr = {1,55,2,17, 8,12,5};// 保存最后的結果int sum = 0;for(int i = 0; i < arr.length; i++){int n = arr[i] * arr[i]; // 求平方sum += n; //累加到一起}System.out.println(sum);總結
- 上一篇: do…while循环
- 下一篇: 包和导包