1、冒泡排序

  1. package cn.zh.abstrac;
  2.  
  3. import java.util.Arrays;
  4.  
  5. //冒泡排序
  6. public class Demo019 {
  7. public static void main(String[] args) {
  8. int[] values = {22, 11, 33, 2, 4, 5, 66, 55, 44};
  9. int temp = 0;
  10. for (int j = 0; j < values.length - 1 - j; j++) {
  11. boolean flag = true;
  12. for (int i = 0; i < values.length - 1; i++) {
  13. //比较大小,换顺序
  14. if (values[i] > values[i + 1]) {
  15. temp = values[i];
  16. values[i] = values[i + 1];
  17. values[i + 1] = temp;
  18.  
  19. flag = false;
  20. }
  21. }
  22. if (flag) {
  23. break;
  24. }
  25. }
  26. System.out.println(Arrays.toString(values));
  27. }
  28. }

运行结果图

2、二分法查找法

  1. package cn.zh.abstrac;
  2.  
  3. import java.util.Arrays;
  4.  
  5. //二分法查找
  6. public class TestBinarySearch {
  7. public static void main(String[] args) {
  8. int[] arr = {30, 20, 50, 10, 80, 9, 7, 12, 100, 40, 8};
  9. Arrays.sort(arr);
  10. System.out.println(Arrays.toString(arr));
  11. System.out.println(myBinarySearch(arr,40));
  12. }
  13.  
  14. public static int myBinarySearch(int[] arr, int value){
  15. int low = 0;
  16. int high = arr.length - 1;
  17.  
  18. while (low <= high) {
  19. int mid = (low + high) / 2;
  20. if (value == arr[mid]) {
  21. return mid;
  22. }
  23. if (value > arr[mid]) {
  24. low = mid + 1;
  25. }
  26. if (value < arr[mid]) {
  27. high = mid - 1;
  28. }
  29. }
  30. return -1;
  31. }
  32. }

运行结果图

3、可变字符序列与不可变字符序列

注:循环累加用StringBuilder

  1. package cn.zh.abstrac;
  2.  
  3. public class TestStringBuilder {
  4. public static void main(String[] args) {
  5. //使用String进行字符串的拼接
  6. String str1 = "";
  7. //本质上使用StringBuilder拼接,但是每次循环都会生成一个StringBuilder对象
  8. long num1 = Runtime.getRuntime().freeMemory(); //获取系统剩余内存空间
  9. //获取系统的当前时间
  10. long time1 = System.currentTimeMillis();
  11. for (int i = 0; i < 5000; i++) {
  12. //相当于产生了10000个对象
  13. str1 = str1 + i;
  14. }
  15. long num2 = Runtime.getRuntime().freeMemory();
  16. long time2 = System.currentTimeMillis();
  17. System.out.println("String占用内存:" + (num1 - num2));
  18. System.out.println("String占用时间:" + (time2 - time1));
  19.  
  20. //使用StringBuilder进行字符串的拼接
  21. StringBuilder sb1 = new StringBuilder("");
  22. long num3 = Runtime.getRuntime().freeMemory();
  23. long time3 = System.currentTimeMillis();
  24. for (int i = 0; i < 5000; i++) {
  25. sb1.append(i);
  26. }
  27. long num4 = Runtime.getRuntime().freeMemory();
  28. long time4 = System.currentTimeMillis();
  29. System.out.println("StringBuilder占用内存:" + (num3 - num4));
  30. System.out.println("StringBuilder占用时间:" + (time4 - time3));
  31. }
  32. }

运行结果图

4、

JAVA进阶19的更多相关文章

  1. java进阶(19)--异常处理机制

    一.基本概念 1.异常的作用: java将异常信息打印至控制台,供程序修改,增加其健壮性. int c=1/0;    //将抛出 java.lang.ArithmeticException 2.异常 ...

  2. 7.19实习培训日志- java进阶

    java进阶 java集合 Collection List ArrayList jdk1.2,异步处理,性能高,线程不安全 Vector jdk1.0,同步处理,性能低,线程安全 Set HashSe ...

  3. Java线程间通信方式剖析——Java进阶(四)

    原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...

  4. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

  5. Java进阶(三十四)Integer与int的种种比较你知道多少?

    Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值 ...

  6. Java进阶(五十三)屡试不爽之正则表达式

    Java进阶(五十三)屡试不爽之正则表达式 在线测试网址: http://tool.oschina.net/regex/# 上面的在线测试网址,含有正则表达式的生成,非常实用.大家共勉之! 匹配中文: ...

  7. Java进阶教程:使用Lombok提升开发效率

    Java进阶教程:使用Lombok提升开发效率 Lombok Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO).它通过注释实现这 ...

  8. java进阶视频分享

    更多资源和教程请关注公众号:非科班的科班. 如果觉得我写的还可以请给个赞,谢谢大家,你的鼓励是我创作的动力 课程目录介绍 01.开班仪式02.并发编程专题之多线程基础03.并发编程专题之Java内存模 ...

  9. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

随机推荐

  1. PHP字符串函数、常量、数组排序

    PHP字符串函数.常量.数组排序 strlen() 说明:strlen(),可以统计字符串长度 用途:strlen() 常用于循环和其他函数,在确定字符串何时结束很重要时.(例如,在循环中,我们也许需 ...

  2. django捡破烂

      一 Django的model form组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库 ...

  3. Python--day12(三元表达式、函数对象、名称空间与作用域、函数嵌套定义)

    今日主要内容 1.  函数默认值细节(*) 2.  数据类型补充:三元表达式.列表推导式.字典推导式 (***) 3.  函数对象:函数名的各种应用场景 (*****) 4.  名称空间与作用域:解释 ...

  4. 501. Find Mode in Binary Search Tree

    Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred ...

  5. maven笔记学习

    一.修改setting.xml文件中的镜像 在导入他人项目或者在导入项目时,我们会出现在项目中不能识别maven配置的库文件的情况那么我们可以重新下载本地库, 首先我们可以修改我们安装的maven环境 ...

  6. vuex 状态管理 通俗理解

    解释:集中响应式数据管理,一处修改多处使用,主要应用于大中型项目. 安装: 第一:index.js:(注册store仓库) npm install vuex -D // 下载vuex import V ...

  7. python-装饰器的最终形态和固定格式 语法糖

    import time def timer(f): # 这是一个装饰器函数 def inner(): start = time.time() f() # 被装饰的函数 end = time.time( ...

  8. python学习日记(面向对象——继承)

    什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class Par ...

  9. abp添加动态菜单

    abp中MenuDefinition封装了导航栏上的主菜单的属性,MenuItemDefinition则封装了子菜单的属性,子菜单可以引用其他子菜单构成一个菜单树. MenuDefinitio成员如下 ...

  10. 洛谷 P2590 [ZJOI2008]树的统计

    大家好,我非常喜欢暴力数据结构,于是我用块状树过了这道题目 题目: 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE ...