算法 Java

以下是为您整理出来关于【算法 Java】合集内容,如果觉得还不错,请帮忙转发推荐。

【算法 Java】技术教程文章

排序系列 之 快速排序算法 —— Java实现【代码】【图】

基本思想:  通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。  1.设置 low=0, high=N-1。  2.选择一个基准元素赋值给temp,即temp=a[low]。  3.从high开始向前搜索,即由后开始向前搜索(high--),找到第一个小于temp的值,将a[high]和a[low]交换。  4.从...

两种插入排序算法java实现【代码】

两种方法都编译运行通过,可以当做排序类直接使用。折半插入排序:publicclass Sort1 {publicstaticvoid main(String[] args) {InsertSort sort = new InsertSort();sort.InsertSort();int[] arr = sort.getarr();System.out.println();System.out.println("排序之后:");for (int ar : arr) {System.out.print(ar + " ");}} }class InsertSort {int[] a = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1 };int i,high,low,...

RSA 非对称加密算法的Java实现【代码】

关于RSA的介绍Google一下很多,这里不做说明。项目开发中一般会把公钥放在本地进行加密,服务端通过私钥进行解密。Android项目开发中要用到这个加密算法,总结后实现如下:import android.content.Context; import android.util.Base64;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.security.Key; import java.security.KeyFactory; i...

经典排序算法(Java实现)【代码】【图】

以下程序均将数据封装于DataWrap数据包装类中,如下所示: 1//数据包装类 2class DataWrap implements Comparable<DataWrap>3 {4int data;5 String flag;6public DataWrap(int data,String flag)7 {8this.data = data;9this.flag = flag; 10 } 11//重写compareTo方法12publicint compareTo(DataWrap other) 13 { 14returnthis.data > other.data ? 1 : (this.data == other.data ? 0 : -1); 15 ...

D16-常用十种算法[Java数据结构和算法]【代码】【图】

1.二分查找(非递归)代码实现 1//实现查找的非递归查找 2/** 3 * 4 * @param arr 待查找的数组,arr是升序排序5 * @param target 需要查找的数6 * @return 返回对应的下标,-1表示没找到7*/ 8publicstaticint binarySearch(int[] arr,int target) {9int left=0; 10int right=arr.length-1; 11while(left<=right) { 12int mid=(left+right)/2; 13if(arr[mid]==target) { 14return mid; 15 }elseif(arr...

AES算法,DES算法,RSA算法JAVA实现

1 AES算法1.1 算法描述1.1.1 设计思想Rijndael密码的设计力求满足以下3条标准:① 抵抗所有已知的攻击。② 在多个平台上速度快,编码紧凑。③ 设计简单。当前的大多数分组密码,其轮函数是Feistel结构。Rijndael没有这种结构。Rijndael轮函数是由3个不同的可逆均匀变换1.1.2 密码说明严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支持更大范围的区块和密钥...

排序算法-JAVA代码

1、插入排序:import java.util.Arrays;public class InsertionSort {public static void insertionSort(int[] input ,int n){int i , j , temp; //temp记录每次插入的值//默认已经插入一个值。for(i = 1 ; i <= n - 1 ; i++){temp = input[i];for(j = i ; j > 0 && input[j - 1] > temp ; j--){input[j] = input[j - 1]; //每次比较后向后移一位}input[j] = temp; //将要插入的值插入到属于它的位置}}public static void main(Str...

经典排序算法 — java 实现【代码】

排序算法的好坏对于效率的影响十分显著。好的排序算法排序100万个整数可能只需要一秒(不考虑硬件因素),不好的排序算法可能需要一个小时甚至几个小时。 常见的排序算法有冒泡排序、插入排序、堆排序、快速排序等,这些排序都属于基于比较的排序,因此这些算法的时间复杂度都不能突破 O(NlogN)。 还有另一类非基于比较的排序,包括基数排序、桶排序、计数排序。 冒泡排序一般情况下效率比较低,在此不再赘述。插入排序(insert so...

图的最短路径算法——Dijkstra算法的 java 实现【代码】【图】

首先,定义Graph类,主要用于保存图的邻接矩阵,实际上保存的是每个节点的出边(outgoing arcs)集合。 Graph 类继承自 SparseMatrix 类,因为大多数图(网络)都是稀疏的,所以用稀疏矩阵来保存图的边及每条边的权值非常方便。 import matrix.SparseMatrix;class Graph extends SparseMatrix{int nodeNum; // 图的节点数boolean symmetric; // 是否为无向图static final double INF = Double.MAX_VALUE; // 表示不相邻的节点之间...

有权最短路径问题:狄克斯特拉(Dijkstra)算法 & Java 实现【代码】【图】

一、有权图 之前我们知道,在无权重的图中,求两个顶点之间的最短路径,可以使用 广度优先搜索 算法。但是,当边存在权重(也可以理解为路程的长度)时,广度优先搜索不再适用。 针对有权图中的两点间最短路径,目前主要有 狄克斯特拉算法 和 贝尔曼福德算法 两种解决方法。本博客以狄克斯特拉算法为例。 备注: 广度优先搜索不了解的,可以戳这个链接:https://blog.csdn.net/afei__/article/details/83242507 二、狄克斯特拉算法...