java示例演算法,Java的演算法

本文目錄一覽:

java中快速排序的演算法舉個例子

package person.test;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.List;

import java.util.Random;

/**

* class name: RapidSort

* description: Java快速排序法:數組和集合

* @author Jr

*

*/

public class RapidSort {

private Random ran = new Random(); // 聲明一個全局變數ran,用來隨機生成整數

/**

* method name: sortArray

* description: 對數組的快速排序,只能用於int[]類型的數組

* @return

*/

private void sortArray() {

int[] array = new int[10]; // 聲明數組長度為10

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

array[i] = ran.nextInt(10) + 1; // 數組賦值

}

Arrays.sort(array);

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

}

/**

* method name: sortList

* description: 對集合的快速排序,可以用於ListObject類型數組,

* 隱含意思就是對所有類型數組都適用

* @return

*/

private void sortList() {

ListInteger list = new ArrayListInteger();

for (int i = 0 ; i 10; i++) {

list.add(ran.nextInt(10) + 1); // 給集合賦10個值

}

Collections.sort(list);

System.out.println(list);

}

public static void main(String[] args) {

RapidSort rs = new RapidSort();

rs.sortArray();

rs.sortList();

}

}

java遞歸演算法的例子。

階乘:

要求:給定一個數值,計算出它的階乘值,例如5的階乘為5*4*3*2*1

實現:

[html] view plaincopy

span style=”font-size:12px;”  // 利用遞歸實現一個數的階乘值      private static BigDecimal getNum(BigDecimal inNum) {          if (inNum.compareTo(BigDecimal.ONE) == 0) {              return inNum;          }          return inNum.multiply(getNum(inNum.subtract(BigDecimal.ONE)));      }/span

(2)Fibonacci數列:1,1,2,3,5,8,13……

要求:找出數列中指定index位置的數值

實現:

[html] view plaincopy

span style=”font-size:12px;”  // 利用遞歸實現了Fibonacci數列      private static int fab(int index) {          if (index == 1 || index == 2) {              return 1;          } else {              return fab(index – 1) + fab(index – 2);          }      }/span

(3)漢諾塔

要求:漢諾塔挪動

實現:

[html] view plaincopy

span style=”font-size:12px;”  span style=”white-space:pre;” /spanprivate static final String DISK_B = “diskB”;    span style=”white-space:pre;”   /spanprivate static final String DISK_C = “diskC”;    span style=”white-space:pre;”   /spanprivate static final String DISK_A = “diskA”;    span style=”white-space:pre;”   /spanstatic String from=DISK_A;  span style=”white-space:pre;” /span  static String to=DISK_C;  span style=”white-space:pre;” /span  static String mid=DISK_B;    span style=”white-space:pre;” /span  public static void main(String[] args) {  span style=”white-space:pre;” /span      String input=JOptionPane.showInputDialog(“please input the number of the disks you want me move.”);  span style=”white-space:pre;” /span      int num=Integer.parseInt(input);  span style=”white-space:pre;” /span      move(num,from,mid,to);  span style=”white-space:pre;” /span  }/span

[html] view plaincopy

span style=”font-size:12px;”  // 利用遞歸實現漢諾塔      private static void move(int num, String from2, String mid2, String to2) {          if (num == 1) {              System.out.println(“move disk 1 from ” + from2 + ” to ” + to2);          } else {              move(num – 1, from2, to2, mid2);              System.out.println(“move disk ” + num + ” from ” + from2 + ” to ” + to2);              move(num – 1, mid2, from2, to2);          }      }/span

(4)排列組合

要求:將輸入的一個字元串中的所有元素進行排序並輸出,例如:你給出的參數是”abc”,

則程序會輸出

abc

acb

bac

bca

cab

cba

實現:

[html] view plaincopy

span style=”font-size:12px;”span style=”white-space:pre;”   /spanpublic static void permute(String str) {   span style=”white-space:pre;”    /span   char[] strArray = str.toCharArray();    span style=”white-space:pre;”   /span permute(strArray, 0, strArray.length – 1);  span style=”white-space:pre;” /span}/span

[html] view plaincopy

span style=”font-size:12px;”  // 利用遞歸實現,將輸入的一個字元串中的所有元素進行排序並輸出      public static void permute(char[] list, int low, int high) {          int i;          if (low == high) {              String cout = “”;              for (i = 0; i = high; i++) {                  cout += list[i];              }              System.out.println(cout);          } else {              for (i = low; i = high; i++) {                  char temp = list[low];                  list[low] = list[i];                  list[i] = temp;                  permute(list, low + 1, high);                  temp = list[low];

java最常用的幾種加密演算法

簡單的Java加密演算法有:

第一種. BASE

Base是網路上最常見的用於傳輸Bit位元組代碼的編碼方式之一,大家可以查看RFC~RFC,上面有MIME的詳細規範。Base編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base來將一個較長的唯一標識符(一般為-bit的UUID)編碼為一個字元串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進位數據編碼為適合放在URL(包括隱藏表單域)中的形式。此時,採用Base編碼具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。

第二種. MD

MD即Message-Digest Algorithm (信息-摘要演算法),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法),主流編程語言普遍已有MD實現。將數據(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,MD的前身有MD、MD和MD。

MD演算法具有以下特點:

壓縮性:任意長度的數據,算出的MD值長度都是固定的。

容易計算:從原數據計算出MD值很容易。

抗修改性:對原數據進行任何改動,哪怕只修改個位元組,所得到的MD值都有很大區別。

弱抗碰撞:已知原數據和其MD值,想找到一個具有相同MD值的數據(即偽造數據)是非常困難的。

強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD值,是非常困難的。

MD的作用是讓大容量信息在用數字簽名軟體簽署私人密鑰前被」壓縮」成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的十六進位數字串)。除了MD以外,其中比較有名的還有sha-、RIPEMD以及Haval等。

第三種.SHA

安全哈希演算法(Secure Hash Algorithm)主要適用於數字簽名標準(Digital Signature Standard DSS)裡面定義的數字簽名演算法(Digital Signature Algorithm DSA)。對於長度小於^位的消息,SHA會產生一個位的消息摘要。該演算法經過加密專家多年來的發展和改進已日益完善,並被廣泛使用。該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。散列函數值可以說是對明文的一種「指紋」或是「摘要」所以對散列值的數字簽名就可以視為對此明文的數字簽名。

SHA-與MD的比較

因為二者均由MD導出,SHA-和MD彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:

對強行攻擊的安全性:最顯著和最重要的區別是SHA-摘要比MD摘要長 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD是^數量級的操作,而對SHA-則是^數量級的操作。這樣,SHA-對強行攻擊有更大的強度。

對密碼分析的安全性:由於MD的設計,易受密碼分析的攻擊,SHA-顯得不易受這樣的攻擊。

速度:在相同的硬體上,SHA-的運行速度比MD慢。

第四種.HMAC

HMAC(Hash Message Authentication Code,散列消息鑒別碼,基於密鑰的Hash演算法的認證協議。消息鑒別碼實現鑒別的原理是,用公開函數和密鑰產生一個固定長度的值作為認證標識,用這個標識鑒別消息的完整性。使用一個密鑰生成一個固定大小的小數據塊,即MAC,並將其加入到消息中,然後傳輸。接收方利用與發送方共享的密鑰進行鑒別認證等。

求 Java 一些經典例子演算法

1:HelloWorldApp

1.//

2.//

HelloWorld

應用示例

3.//

4.public

class

HelloWorldApp{

5.

public

static

void

main

(String

args[])

{

6.System.out.println

(“Hello

World!”);

7.

}

8.}

以上程序行是在你的屏幕上列印「Hello

World!」所需的最少代碼。

原創文章,作者:EUOG,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/132942.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EUOG的頭像EUOG
上一篇 2024-10-03 23:55
下一篇 2024-10-03 23:55

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python實現爬樓梯演算法

    本文介紹使用Python實現爬樓梯演算法,該演算法用於計算一個人爬n級樓梯有多少種不同的方法。 有一樓梯,小明可以一次走一步、兩步或三步。請問小明爬上第 n 級樓梯有多少種不同的爬樓梯…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29

發表回復

登錄後才能評論