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