java一些基本算法
本文主要介绍一些常用的算法:
冒泡排序:两两相互之间进行比较,如果符合条件就相互兑换。
//冒泡排序升序
public static int[] bubblingSortAsc(int[] array){
if (array.length==0)
return array;
for (int i=0;i<array.length;i++){
for (int j=i+1;j<array.length;j++){
int temp;
if (array[i]>array[j]){
temp = array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
return array;
}
运行结果:

简单插入排序:例如,将数组进行升序,遍历数组,取出i+1,和(i+1)之前的每一项进行对比,直到(i+1)的数据大于比较的数据。
//简单插入排序
public static int[] insertSortAsc(int[] array){
if (array.length==0)
return array;
int currentValue; for (int i=0;i<array.length-1;i++){
int pre = i;
currentValue = array[pre+1]; //取出当前遍历的后一位 //把当前位置之前的每一项都进行对比
while (pre>=0 && currentValue<array[pre]){
array[pre+1] = array[pre];
pre--;
} array[pre+1] = currentValue; }
return array;
}
运行结果:

归并排序:把一个数组一直拆分,直到符合数组定义的数据。然后比较,比较完之后再和其他的进行比较,然后在一层一层的比较。

public static int[] sort(int[] array){
final int len = 5;//默认最小的数组长度为5
if (array.length<=len) {
return insertSortAsc(array);//对数组进行正序排序
}else {
int mid = array.length / 2;
int[] left = Arrays.copyOfRange(array, 0, mid);
int[] right = Arrays.copyOfRange(array, mid, array.length);
return compare(sort(left),sort(right));
}
}
public static int[] compare(int[] left,int[] right){
int[] result = new int[left.length+right.length];
for (int i=0,l=0,r=0;i<result.length;i++){
if (l>=left.length)//当left集合取不到数据的时候,直接从right集合拿数据
result[i] = right[r++];
else if (r>=right.length) //当right集合取不到数据的时候,直接从left集合取数据
result[i] = left[l++];
else if (left[l]>right[r]) //当left集合的数据大于right集合的数据,去right集合的数据
result[i] = right[r++];
else //都不符合就直接取right集合数据
result[i] = left[l++];
}
return result;
}
运行结果,自己操作就可以了
以上便是个人对一些简单算法的见解。
java一些基本算法的更多相关文章
- Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
- Java字符串排列算法
Java字符串排列算法 题目:现有ABCDE 5个球 构成的排列组合 可重复抽取 最多取到16个 共有多少种组合方式? 比如:取1个球可以构成的组合有 A B C D E 共5种,取2个球可以构成的组 ...
- Java 常用排序算法/程序员必须掌握的 8大排序算法
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
- Java实现KMP算法
/** * Java实现KMP算法 * * 思想:每当一趟匹配过程中出现字符比较不等,不需要回溯i指针, * 而是利用已经得到的“部分匹配”的结果将模式向右“滑动”尽可能远 * 的一段 ...
- java结构与算法之选择排序
一 .java结构与算法之选择排序(冒择路兮快归堆) 什么事选择排序:从一组无序数据中选择出中小的的值,将该值与无序区的最左边的的值进行交换. 简单的解释:假设有这样一组数据 12,4,23,5,找到 ...
- java:高速排序算法与冒泡排序算法
Java:高速排序算法与冒泡算法 首先看下,冒泡排序算法与高速排序算法的效率: 例如以下的是main方法: /** * * @Description: * @author:cuiyaon ...
- Java数据结构和算法
首先,本人自学java,但是只学习了java的基础知识,所以想接下来学习一下数据结构和算法,但是找了很多教材,大部分写的好的都是用c语言实现的,虽然知道数据结构和算法,跟什么语言实现的没有关系,但是我 ...
- 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型 顺序栈的设计与实现 链式栈的设计与实现 栈的应用 栈的抽象数据类型 栈是 ...
- Java数据结构和算法(一)——简介
本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子. 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱.一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数 ...
- Java数据结构和算法(六)——前缀、中缀、后缀表达式
前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...
随机推荐
- 中标麒麟+Qt+mysql解决驱动无法加载的问题
问题描述:都安装了Qt,Mysql之后,发现Qt始终不能连接Mysql 1.安装Qt 2.写程序直接连接QMysql 打印QSqlDatabase: * driver not loaded ,进入/h ...
- matlab基本函数inf, isempty, round, floor, fix
一起来学演化计算-matlab基本函数inf, isempty, round, floor ,fix 觉得有用的话,欢迎一起讨论相互学习~Follow Me inf matlab中 inf无穷大量+∞ ...
- iOS电商类App研发学习总结
一.涵盖知识点: 1.电商类App架构: https://www.cnblogs.com/loying/p/4801194.html 2.快速搭建电商平台: https://www.jianshu.c ...
- [lodop]css样式after、before添加content内容之前和之后
css样式可以在内容之前和之后加内容.格式是:css类名:before{content:在之前加的内容}css类名:after{content:在之后加的内容}这种写法在LODOP里直接测试是不行的, ...
- 使用jsPlumb插件实现动态连线功能
这周去看了两天的羽毛球亚锦赛,工作有提前晚上加班做一些,但是技术文章却拉下了. 这段时间一直在寻找可以实现前端元素动态连线的功能,找了好几个库,考虑过用d3或者原生svg和canvas来实现,最后和同 ...
- Docker入门之docker-compose
参考:https://blog.51cto.com/9291927/2310444 一,Docker-compose简介 1,Docker-compose简介 Docker-Compose项目是Doc ...
- Python3 IO编程之文件读写
读写文件是最常见的IO操作.python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一个,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序终结操作磁盘, ...
- Centos 更改MySQL5.7数据库目录位置
原文地址:https://blog.csdn.net/zyw_java/article/details/78512285 Centos7.3 安装Mysql5.7并修改初始密码 基于 CentOS M ...
- git rebase VS git merge
git rebase VS git merge 写在前面 如果你不能很好的应用 Git,那么这里为你提供一个非常棒的 Git 在线练习工具 Git Online(回复公众号「工具」,获取更多内容) , ...
- C#本地修改器
C#本地修改器 C# 制作外挂常用的API C#做外挂的常用API,本人用了很久,基本没发现问题 using System; using System.Collections.Generic; usi ...