zoukankan      html  css  js  c++  java
  • 数组的算法

    数组的算法

        在我们计算机界, 简称机界, 有这么一句话, “程序是由数据结构+算法组成的.”. 数据结构我们后面还会给大家慢慢普及, 那算法呢? 已经学了这么多了, 该来点儿逻辑思维强一点的东西了. 也是给自己设置的一个小小障碍吧.
        数组学完了, 很简单的一个知识点. 但是, 学完数组不讲一点儿算法, 总觉着心里过不去, 好像少了一点儿什么东西一样. 那本节就给大家讲一丢丢

    算法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); // 20
     System.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); 
  • 相关阅读:
    nginx 详解
    阿里云 消息队列mq
    手机浏览器Yandex安装插件说明
    windows下JAVA环境变量配置
    共享文件夹免密登入
    自动添加静态路由
    加入WSUS补丁服务器并下载补丁
    加入时间同步服务器(NTP)
    更改rdp端口
    关闭及开启445等危险端口
  • 原文地址:https://www.cnblogs.com/wenyule/p/12182988.html
Copyright © 2011-2022 走看看