0.总结

常见算法复杂度.jpg

O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n),logn的底数为2

1.归并排序

package DailyPractice;

import java.util.*;

public class Test1 {

/**

* 归并排序的思路:先将数组的左边和右边分开排完序之后再合并,

* 其中左边和右边的排序也是递归用这种先分开排序再合并的思想。

* 步骤:

* 1.MergeSort左边

* 2.MergeSort右边

* 3.Merge两边(两边的头先开始比较,把较小的放进临时数组,

* 然后将左边剩余的移进数组,再将右边剩余的移进数组,最后将临时数组覆盖特定部分的旧数组)

* @param args

*/

public static void main(String[] args) {

int[] a = new int[]{2,45,8,147,312,42,478};

MyMergeSort(a,0,a.length-1);

System.out.println(Arrays.toString(a));

}

private static void MyMergeSort(int[] a, int low, int high) {

int middle = (high+low)/2;

if (low

MyMergeSort(a,low,middle);

MyMergeSort(a,middle+1,high);

MyMerge(a,low,middle,high);

}

}

private static void MyMerge(int[] a, int low, int middle, int high) {

int[] temp = new int[high-low+1];

int i = low;

int j = middle+1;

int k = 0;

//把较小的先移进数组

while(i<=middle && j <=high){

if (a[i]

temp[k++] = a[i++];

}else {

temp[k++] = a[j++];

}

}

while(i<=middle){

temp[k++] = a[i++];

}

while (j<=high){

temp[k++] = a[j++];

}

//将新数组覆盖旧数组

for (int l = 0; l < temp.length; l++) {

a[l+low] = temp[l];

}

}

}

2.快速排序

package DailyPractice;

import java.util.*;

public class Test1 {

/**

* 快速排序的思路:首先选择一个锚点,将比他小的数移到他的左边,比他大的数移到右边,

* 然后用同样的思想对左边和右边进行排序

* @param args

*/

public static void main(String[] args) {

int[] a = new int[]{2,45,8,147,312,42,478};

MyQuickSort(a,0,a.length-1);

System.out.println(Arrays.toString(a));

}

private static void MyQuickSort(int[] a, int low, int high) {

if (low>high)return;

int pivot = a[low];

int i = low;

int j = high;

while (i!=j){

//记得要先从右边先开始

while (a[j]>=pivot && i

j--;

}

while (a[i]<=pivot && i

i++;

}

if (i

int temp = a[i];

a[i] = a[j];

a[j] = temp;

}

}

a[low] = a[i];

a[i] = pivot;

MyQuickSort(a, low, i-1);

MyQuickSort(a,i+1,high);

}

}

3.选择排序

package DailyPractice;

import java.util.*;

public class Test1 {

/**

* 选择排序的思路:首先第一次遍历数组找出最小的数,放在最左边,

* 第二次遍历找出第二小的数放在第二个位置,依次遍历直到数组排完。

* 其中的方法是:定一个索引,依次遍历数组,如果比他小的就将索引换为该数的下标,最后如果

* 索引和一开始的下标不一样就替换。

* @param args

*/

public static void main(String[] args) {

int[] a = new int[]{2,45,8,147,312,42,478};

MySelectionSort(a);

System.out.println(Arrays.toString(a));

}

private static void MySelectionSort(int[] a) {

for (int i = 0; i < a.length; i++) {

int minIndex = i;

for (int j = i; j < a.length; j++) {

if (a[j]

java常用算法分析和实现 amp,Java常用算法实现相关推荐

  1. c语言常用算法分析 微盘,C语言常用算法归纳.pdf

    C 语言常用算法归纳 应当掌握的一般算法 一.基本算法: 交换.累加.累乘 二.非数值计算常用经典算法: 穷举.排序(冒泡,选择).查找(顺序即线性) 三.数值计算常用经典算法: 级数计算(直接.简接 ...

  2. java. 算法分析,Java常用算法分析

    Java常用算法分析 一  插入排序法: 说明: 每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止. Java代码 public class I ...

  3. Java程序员时刻铭记的Git常用命令

    今天动力节点Java学院为大家整理了Java架构师必备Git常用命令清单 工程下载.分支的增删查改 工程下载: clone 远程工程:git clone https://XXXX.git fetch ...

  4. java开发常用jar包_Java开发中常用jar包整理及使用

    本文整理了我自己在Java开发中常用的jar包以及常用的API记录. 一.common-lang3 简介:一个现在最为常用的jar包,封装了许多常用的工具包 依赖: org.apache.common ...

  5. Java 必须掌握的 12 种 Spring 常用注解

    转载自  Java 必须掌握的 12 种 Spring 常用注解 1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repo ...

  6. Java函数编码_转[收集java的常用函数代码]

    转[收集java的常用函数代码] package net.java2000.tools; /** * Title:        Java Bean 工具 * Description: * Copyr ...

  7. Java集合框架之四大接口、常用实现类,java基础面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  8. java 获取本机信息,使用Java获取系统信息的常用代码整理总结

    1.获取CPU和内存信息 ? 2.获取本机的IP地址: ? 3.获得网卡地址 ? 4.获得操作系统帐号 ? 5.获得操作系统版本 ? 6.一些常用的信息获得方式整理 java.version    J ...

  9. JAVA基础03-Object类,常用类,基本的数据结构, Collection常用体系,泛型-泛型通配符

    1.object类 1.概述 java.lang.object类是java语言中的根类,即所有类的超类(基类)他描述的所有的方法子类都可以使用,在对象实例化的时候最终找到的类就是object 如果一个 ...

最新文章

  1. 在线视频解决方案供应商
  2. Linux上安装MongoDB
  3. 多线程中的应用之队列(queue)
  4. boost::units模块实现异构单元片段
  5. 如何修改webbrowser里的JS函数
  6. 2018蓝桥杯省赛---java---C---2(猴子分香蕉)
  7. android学习笔记42——图形图像处理2——绘图
  8. Spring Boot(一) 建立spring boot工程
  9. IoT:电子密本ECB和DES模式详解
  10. 光斑质心检测之曲线拟合求亚像素位置的三种方式
  11. Postfix+Dovecot搭建MailServer配置说明
  12. L298N——真正的玄学驱动板
  13. Java核心技术卷1 如何阅读?
  14. 教你不要光驱一样重装系统
  15. jquery左侧图片与右侧图片以及放大镜和图片的放大的图片和产品的隐藏的效果
  16. 备考BEC高级全记录:
  17. PMP备考大全:经典题库(7月第4周)
  18. RN动画Animated
  19. YOLO-MASK对图像数据集进行清洗
  20. 正则表达式匹配任何空白字符或者非空白字符

热门文章

  1. Windows Forms、MFC、WTL、WxWidgets、Qt、GTK综合比较
  2. [Pku 2774] 字符串(六) {后缀数组的构造}
  3. Django博客--5.让博客支持 Markdown 语法和代码高亮
  4. api接口怎么对接_系统对接项目管理方面怎么做?从一次项目接口对接说起
  5. 转换文档参数_明明2秒可以搞定Word、Excel相互转换,你却用了半小时!真亏了...
  6. MySQL 之 performance_schema
  7. python子类继承父类特性,pycharm上面已经提示继承了,为什么会报没有该特性的错误?
  8. Java开发必须熟悉的Linux命令总结
  9. C#串口SerialPort常用属性方法
  10. LInux:shell 彩色进度条实现(有图有代码有真相!!!)