如何使用java实现一些常用的算法
简述
本文使用java实现了一些常用的算法,包括:冒泡排序 ,分治法快速排序, 选择排序 ,插入排序 ,生成斐波那契数列,滑动窗口查找 ,二分查找有序数组 ,希尔排序,并且会持续更新。代码已上传至github和gitee上,本文为原创文章,引用请注明出处。
冒泡排序
public static void bubbleSort(Integer[] arr){System.out.println("Before sorted: "+ Arrays.toString(arr));int temp;for(int i=0;i<arr.length;i++){for(int j=0;j<arr.length-i-1;j++){if(arr[j]>arr[j+1]){temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}System.out.println("After sorted: "+ Arrays.toString(arr));}
分治法快速排序
public static void quickSort(Integer[] arr, int low, int high){if(low>high)return;//选中一个基准,按基准分割大小int pivot = arr[high];int temp = 0;int pivotIndex = low;for(int i=low;i<high;i++){if(arr[i]<pivot){temp=arr[pivotIndex];arr[pivotIndex]=arr[i];arr[i]=temp;pivotIndex++;}}arr[high]=arr[pivotIndex];arr[pivotIndex] = pivot;quickSort(arr,0,pivotIndex-1);quickSort(arr,pivotIndex+1,high);}
选择排序,选出每个位置上属于该位置的数字
public static void selectionSort(Integer[] arr){int temp = 0;for(int i=0;i<arr.length;i++){for(int j=i;j<arr.length;j++){if(arr[i]>arr[j]){temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}}
插入排序,每次插入一个数字进行排序
public static void insertSort(Integer[] arr){int temp = 0;for(int i=1;i<arr.length;i++){for(int j=0;j<i;j++){if(arr[j]>arr[i]){temp = arr[j];arr[j] = arr[i];arr[i] = temp;}}}}
生成斐波那契数列
public static int[] generateFiboArr(int length){int[] arr = new int[length];for(int i=0;i<length;i++){arr[i] = fibo(i);}return arr;}public static int fibo(int count){if(count<=1)return count;return fibo(count-1)+fibo(count-2);}
滑动窗口查找
public static boolean shiftSearch(@NotNull String str, @NotNull String needFind){int start = 0;int end=needFind.length();String temp = null;while(end<str.length()){temp = str.substring(start,end);if(temp.equals(needFind)){return true;}start++;end++;}return false;}
二分查找有序数组
public static boolean binarySearch(Integer[] arr, int needFind){int start = 0;int end = arr.length-1;int index = end/2;while(index>=1 && index<=(arr.length-1)){if(arr[index] == needFind){return true;}else if(arr[index] < needFind){start = index;}else{end = index;}index = (start+end)/2;}return false;}
希尔排序,分辨率越低数组越有序
public static void shellSort(double[] arr, int resolution){int length = arr.length;double temp = 0d;while(resolution>0){for(int i=resolution;i<length;i++){for(int j=i;j>=resolution;j-=resolution){temp=arr[j];if(arr[j-resolution]>temp){arr[j] = arr[j-resolution];arr[j-resolution] = temp;}}}}}
如何使用java实现一些常用的算法相关推荐
- java开发中常用的算法_总结一下项目开发过程中常用的到的一些加密算法。
一般常用的有: MD5.SHA算法:代码如下 Java代码 /* * Copyright (c) 2008 * All rights reserved. */ packagecn.com.jody.w ...
- 各种Java实现的常用排序算法
文章目录 冒泡排序 堆排序 - heap sort 插入排序 - insert sort 归并排序 - merge sort 快速排序 - quick sort 另一种快速排序 选择排序 希尔排序 冒 ...
- java实现apriori算法_七大经典、常用排序算法的原理、Java 实现以及算法分析
0. 前言 大家好,我是多选参数的程序员,一个正再 neng 操作系统.学数据结构和算法以及 Java 的硬核菜鸡.数据结构和算法是我准备新开的坑,主要是因为自己再这块确实很弱,需要大补(残废了一般) ...
- java 性能 排序_Java常用排序算法及性能测试集合
package algorithm.sort; import java.lang.reflect.Method; import java.util.Arrays; import java.util.D ...
- [转载] java实现四种常用排序算法
参考链接: 用Java排序 四种常用排序算法 ##注:从小到大排 ##冒泡排序## 特点:效率低,实现简单 思想:每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有 ...
- Java折半二叉树,成都汇智动力-Java实现常用排序算法
原标题:成都汇智动力-Java实现常用排序算法 排序算法介绍 1. 基本概念 稳定性: 待排序的数列中,若两个元素的值相等 R1 = R2 ,在排序结束之后,元素之间的相对位置没有发生变化,则称排序算 ...
- 常用排序算法-----------JAVA实现
#常用排序算法-插入排序,选择排序,交换排序,归并排序,基数排序 ###排序算法可归类为以下几类: 插入排序: 直接插入排序(DirectInsertSort): 二分法排序(BinarySort): ...
- 我们一起来排序——使用Java语言优雅地实现常用排序算法
破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...
- Java的GC机制及算法
转载自 Java的GC机制及算法 GC的阶段 对每个对象而言,垃圾回收分为两个阶段:finalization和reclamation. finalization: 指运行这个对象的finaliz ...
- Visual C# 诠释常用排序算法
Visual C# 诠释常用排序算法 前段时间因为项目需要,做了个用来对数组排序的类,顺便把以前学过的几种排序算法用C#实现一下.用C#的一些机制来诠释了一下算法的是实现.在阅读本之前,需要一些对C# ...
最新文章
- JDK源码研究Jstack,JMap,threaddump,dumpheap的原理
- 1088 Rational Arithmetic
- 手动配置linux(centos)的IP地址
- 荣获计算机视觉“奥斯卡”奖提名的年轻人!康奈尔大四学生林之秋的科研之道...
- 算法之最近最少使用LRU
- Android之自定义控件显示点赞用户并通过用户名称进入该用户主页的功能
- A - 数据结构实验之排序一:一趟快排
- spark从hbase读数据到存入hbase数据两种版本写法
- 请问华为三层交换机里面的那个从IP是个什么意思? -
- 亚马逊如何变成 SOA(面向服务的架构)?
- postmapping注解参数说明_从零搭建后端框架:优雅的参数校验Validator
- server接收dtu透传代码_Swoole学习笔记二:初探server与client(Client同步)
- python多线程url采集器 + github_python实现多线程采集的2个代码例子
- angularjs ng-include
- html表单提交带后台,form表单提交数据给后台
- Qt教程,Qt6.3,Qt6.2,Qt6,Q,v6.3.1入门,Qt编程入门
- HDU5144 NPY and shot BestCoder Round #22 1003
- Java 使用嵌套 for 循环打印皇冠
- 怎样在线制作gif表情包?教你快速制作gif表情包
- python5.2、输出格式控制 - 摄氏-华氏温度换算
热门文章
- java http proxy server
- 百度云下载插件,创建链接,脚本管理,百度网盘快速下载
- android webview 无法加载插件,webView 测试问题,无法检测到 webView 控件
- 常用电子元器件检测方法与经验
- Python编程实践之Choose
- 《21天学通Java(第6版)》—— 1.2 面向对象编程
- Java开发 明华usbkey_v3 明华二次开发包,usbkey 内有很多demo程序。 USB develop 238万源代码下载- www.pudn.com...
- wsdl2java 工具_apache CXF wsdl2java工具的使用
- VMware Workstation 14 Pro永久激活密钥
- Prescan基础知识总结