1105数组的算法

升序

引入一个工具

  • 知识

    • 如何导入工具类

      • import 工具类的路径
  • 例子

    • import java.util.Arrays;

使用工具

  • sort方法

    • 功能

      • 帮我们把数组进行升序,由小到大
      • 会影响数组内部的结构
    • 用法

      • Arrays.sort(数组);

参考代码

import java.util.Arrays;public class Test {public static void main(String[] args) {int[] nums = new int[]{2,5,3,2,6};Arrays.sort(nums);for(int i=0;i<nums.length;i++){System.out.println(nums[i]);}}
}

交换两个变量

使用第三个变量

  • 代码

    import java.util.Arrays;public class Test {public static void main(String[] args) {int a = 11;int b = 22;int temp;System.out.println("数据交换前a与b的值" + a + "---" + b);// 让临时的变量接收一个数据temp = b;b = a;a = temp;// 数据交换成功System.out.println("数据交换后a与b的值" + a + "---" + b);}
    }
  • 核心代码

    temp = b;
    b = a;
    a = temp;

不允许使用第三个变量

  • 核心代码

    a=a+b;
    b=a-b;
    a=a-b;

逆序

光标移动的最大下标算法

  • 数组会在哪里停下,取决于数组的长度。
  • 如果数组的长度是n,那么
  • 下标不会走到n/2

算法代码

public class Test {public static void main(String[] args) {// 初始化一个数组String[] strList = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"};// 遍历时遇到哪个索引会停止的算法: 数组的长度除2取整int topIdx = strList.length / 2;// 开始遍历,让下标从0开始游走for (int i = 0; i < topIdx; i++) {// 把下标所在的值交给临时变量String temp = strList[i];// 获得交换索引值,计算出要与哪个索引进行数据交换int changeIndex = strList.length - 1 - i;// 把交换索引值,对应的数据赋值给当前光标所在空间strList[i] = strList[changeIndex];// 把临时变量的值,赋值给交换索引的值strList[changeIndex] = temp;}// 遍历数组,查看排序后的效果for (int j = 0; j < strList.length; j++) {System.out.print(strList[j]);}}
}

求最大值

算法

  • 来一个临时变量
  • 让数组成员的值与临时变量比较
  • 谁大,就把谁的值赋给临时变量

代码

public class getmaxnum {public static void main(String[] args) {// 定义一个整数数组,同时给与初始值int[] numList = {11, 22, 4, 3, 55, 33};// 开始比较大小// 定义一个变量,用于保存最大的数据int temp = numList[0];// 开始鹿历for (int i = 1; i < numList.length; i++) {// 需要重复的事情就是// 拿temp的数据与下标所对应的数据进行大小比较,if (numList[i] > temp) {// 把当前下标对应的值,赋给temp变量temp = numList[i];}}System.out.println("最大的值是" + temp);}
}

追加数据

算法

  • 遍历数组找到第一个出现null的位置
  • 记录这个位置,并往数组的这个位置插入数据

代码

        String[] strList = new String[5];// 给空间赋值strList[0] = "hello";strList[1] = "java";strList[2] = "welcom";// 需要插入的数据String sendKey = "c#";// 插入算法for (int i = 0; i < strList.length; i++) {System.out.println(i);// 每一次进入循环要重复做的事情// 判断光标i所对应的值是否为nullif (strList[i] == null) {
//                System.out.println("光标对应的值是null" + i);strList[i] = sendKey;break;}}for (int j = 0; j < strList.length; j++) {System.out.println(strList[j]);}

中部插入数据

伪代码

第一步:
找到最大有效数据的下标
int temp=0;
for(int m=0;m<数组.length;m++){if(数组[m]==null){temp = m;break;
}
temp--;}第二步:后移
// 数据后移的遍历
for(int i=temp;i>j;i--){数组[i+1]=数组[i];
}第三步:
数据的插入
数组[j]=“html";

XMind - Trial Version

1105学习笔记 数组的算法上相关推荐

  1. c语言中void arrout,c语言学习笔记(数组、函数

    <c语言学习笔记(数组.函数>由会员分享,可在线阅读,更多相关<c语言学习笔记(数组.函数(53页珍藏版)>请在人人文库网上搜索. 1.数组2010-3-29 22:40一维数 ...

  2. Go语言学习笔记-数组、切片、map

    Go语言学习笔记-数组.切片.map 数组:同一数据类型元素的集合.是值类型,长度固定无法修改 声明格式:var 数组名字 [元素数量] 数据类型 var arr [3] int //声明定义了一个长 ...

  3. Java 学习笔记 - 数组类型互转

    Java 学习笔记 - 数组类型互转 数组类型转换 字符串数组 to (Integer.Long.Double)列表 传统方式 Java8 Stream方式 数组 to 数组 字符串数组 to (in ...

  4. 【计算机专业漫谈】【计算机系统基础学习笔记】W1-计算机系统概述

    利用空档期时间学习一下计算机系统基础,以前对这些知识只停留在应试层面,今天终于能详细理解一下了.参考课程为南京大学袁春风老师的计算机系统基础MOOC,参考书籍也是袁老师的教材,这是我的听课+自查资料整 ...

  5. C 学习笔记 - 数组

    在学习了 C 语言的数组之后,我发现 C 中的数组与 C# 中的数组除了书写形式上略有区别,其它的基本上都一模一样. 因为之前有 C# 的底子,所有学习 C 语言,感觉也挺轻松的,不过 C 和 C# ...

  6. php 学习笔记 数组1

    1.一般情况下$name['tom']和$name[tom]是相同的:但没有引号的键不能和常量区别开,如:define('index', 5)时:$name['tom']和$name[tom]不同 2 ...

  7. JAVA学习笔记--数组初始化

    JAVA中,数组只是相同类型的.用一个标识符名称封装到一起的一个对象序列或基本类型数据序列.数组通过方括号下标操作符[]来定义和使用,要定义一个数组只需在类型名后面加上一个方括号即可,如: int[] ...

  8. PHP学习笔记-数组

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/51635540 本文出自:[顾林海的博客] 前言 数组就是一系列数据的集 ...

  9. php 学习笔记 数组2

    10.切割数组 array_slice(array, offset, length);返回一个由原始数组中的连续元素组成的新数组,参数1为原始数组,参数2为要复制的起始位置, 参数3要复制的个数:新数 ...

最新文章

  1. 一起学 c++(二)
  2. 【报告】2014年移动端二次元用户调查报告:进击的90后
  3. 改变Android ProgressBar样式颜色
  4. [MongoDB]db.serverStatus()命令详解
  5. 游戏筑基开发之文件操作(C语言)
  6. 说说微信聊天记录收费这件事
  7. 关于filter用户授权的例子
  8. 【转】浅谈命令查询职责分离(CQRS)模式
  9. PROC文件及文件夹创建
  10. 腾讯微博等7家网站实行实名制
  11. 用大数据扒一扒手机黑卡 | Alfred数据室
  12. 2021级南航计算机专硕829备考记录
  13. 基于Vue实现的魔方矩阵排列效果
  14. 教你如何下载抖音视频的背景音乐?是音乐不是视频哦
  15. linux怎么看用的哪个网卡驱动,linux下如何查看网卡驱动版本信息?
  16. 从单体式架构迁移到微服务架构
  17. 智能卡卡发卡流程(收藏3)
  18. 找准盈利模式,博客网站赚钱也轻松
  19. Guava Splitter,Splitter与Java split的对比
  20. 什么是生态型平台企业?

热门文章

  1. Android :ScaleAnimation
  2. shopxo首页的新闻头条栏:如何隐藏或关闭?
  3. java开发框架_Java-程序员感悟-开发人员喜欢的框架之Spring
  4. wordpress模板-响应式博客主题模板-Repay主题开源版
  5. 至尊版影视双端app源码对接苹果CMS 带商城码支付
  6. html在线消息,HTML5之消息通知的使用(Web Notification)
  7. python一行代码迷宫_通过Python代码实现走迷宫的方法
  8. 原生仿微信社交社区即时通讯聊天双端APP源码开源带PC客户端文档说明
  9. CSS 命名规范参考及书写注意事项
  10. Linux Shell脚本入门教程系列之(十一)Shell while循环