導航:首頁 > 源碼編譯 > java是如何實現演算法

java是如何實現演算法

發布時間:2022-04-30 14:16:26

『壹』 用java實現一個演算法

import java.lang.Math;
import java.util.Random;

/**
* 冒泡排序
* 該程序先隨機生成一個長度為10,並且數值在10-210之間的數組
* 然後通過冒泡的方法對生成的數組進行排序並從控制台輸出。
*
*/
public class SortTest {
/**
* 升序標志
*/
public static final int SHENGXU=1;
/**
* 降序標志
*/
public static final int JIANGXU=2;
/**
* 主函數
* @param args
*/
public static void main(String args[]) {
SortTest.execSort(JIANGXU);
}

/**
* 交換值,交換數組的兩個值
* @param array 操作的數組
* @param i 第一個
* @param j 第二個
*/
private static void jiaohuan(int[] array,int i, int j)
{
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}

/**
*
* @param method
* 1為升序,2為降序
*/
public static void execSort(int method) {
int[] array = null;
array = initArray(10, 210, 10);
int[] orderarray = maopao(array,method);
for (int i = 0; i < orderarray.length; i++) {
System.out.println(orderarray[i]);
}
}

/**
* 取隨機數據,初始化一個數組
*
* @param min
* 隨機數的最小值
* @param max
* 最大值
* @param size
* 取得隨機數的數量
* @return
*/
public static int[] initArray(int min, int max, int size) {
int[] init = new int[size];

for (int i = 0; i < size; i++) {
init[i] = min + (int) (Math.random() * (max - min + 1));
System.out.println(i + "-------" + init[i]);
}
return init;
}

/**冒泡排序方法
* 原理:從最後一個開始將小的或大的逐漸冒出
* @param array
* @param method
* @return
*/
public static int[] maopao(int[] array,int method)
{
for(int i=0;i<array.length;i++)
{
for (int j=array.length -1 ;j>i;j--)
{
if (method==2)
{
if (array[i] < array[j])
jiaohuan(array,i,j);
}else if (method==1)
if (array[i] > array[j])
jiaohuan(array,i,j);
}
}
return array;
}
}

『貳』 java實現幾種常見排序演算法

下面給你介紹四種常用排序演算法:

1、冒泡排序

特點:效率低,實現簡單

思想(從小到大排):每一趟將待排序序列中最大元素移到最後,剩下的為新的待排序序列,重復上述步驟直到排完所有元素。這只是冒泡排序的一種,當然也可以從後往前排。

『叄』 java程序中,實現一種演算法

相同點:都是JVM載入類後且在構造函數執行之前執行,在類中可定義多個,一般在代碼塊中對一些static變數進行賦值。

不同點:靜態代碼塊在非靜態代碼塊之前執行。靜態代碼塊只在第一次new時執行一次,之後不在執行。而非靜態代碼塊每new一次就執行一次。

『肆』 java如何實現下面演算法

//大概看了一下,發現所需人力沒說明什麼用,在本題中處於什麼條件
//只說思路要去買飯,懶得寫code

//1.定義一個Task屬性開始時間結束時間人力

//2.將5個任務放到一個集合中tasks=List<Task>

//3.循環輸出,第一次拿Task1的endTime與下一個Task的startTime比較,如果小則count計數+1
//並將Task1的endTime=(下一個Task的endTime)
//這寫一下吧
DateendTime=null;
intcount=0;

for(Tasktask:tasks){//第一種情況第一個任務他參與,第二種情況他從第二個任務參與
endTime=task.EndTime;
for(Tasktask:tasks){
if(endTime<task.StartTime){
count++;
endTime=task.EndTime;
}
}
}
count即為最大任務數;

//可能有更優方式,懶得想了;

『伍』 java怎麼實現下面的演算法

順序表的逆置:
獲取順序表的頭和尾兩個index :first、last,定義for循環、兩個臨時的index,a和b
a = first + i; b = last - i;
用變數分別獲取a和b兩個節點的值,然後交換
直到全部交換完成或只剩一個元素時退出循環。
刪除值相同的多餘元素:
1、定義一個類,類中定義一個順序表變數,定義添加方法,如果順序表中已有該值則不添加

『陸』 java如何實現填充演算法

四向連通遞歸填充演算法:
void BoundaryFill4(int x, int y, long FilledColor, long BoundaryColor)
{
long CurrentColor;
CurrentColor = GetPixelColor(x,y);
if (CurrentColor != BoundaryColor && CurrentColor != FilledColor)
{
SetColor(FilledColor);
SetPixel (x,y);
BoundaryFill4(x+1, y, FilledColor, BoundaryColor);
BoundaryFill4(x-1, y, FilledColor, BoundaryColor);
BoundaryFill4(x, y+1, FilledColor, BoundaryColor);
BoundaryFill4(x, y-1, FilledColor, BoundaryColor);
}
}
該演算法的優點是非常簡單,缺點是需要大量棧空間來存儲相鄰的點。

『柒』 怎樣用java 實現計算器的 演算法

package com.t.core.util;

/**
* 數學計算工具類
*
* @author Administrator
*
*/
publicclassMathUtil {
// ----------------三角運算----------------------
/**
* 弧度轉化為角度
*
* @param degress
* @return
*/
publicstaticdouble toDegress(double degress) {

return Math.toDegrees(degress);
};

/**
* 角度轉化為弧度
*
* @param radians
* @return
*/
publicstaticdouble toRadians(double radians) {

return Math.toRadians(radians);
};

/**
* 反餘弦
*
* @param acos
* @return角度范圍在0.0到pi之間
*/
publicstaticdouble aCos(double acos) {

return Math.acos(acos);
};

/**
* 反正弦
*
* @param asin
* @return角度范圍在-pi/2到pi/2之間
*/
publicstaticdouble aSin(double asin) {

return Math.asin(asin);
};

/**
* 反正切
*
* @param atan
* @return角度范圍在-pi/2到pi/2之間
*/
publicstaticdouble aTan(double atan) {

return Math.atan(atan);
};

/**
* 三角餘弦
*
* @param cos
* @return
*/
publicstaticdouble cos(double cos) {

return Math.cos(cos);
};

/**
* 雙曲餘弦
*
* @param cosh
* @return
*/
publicstaticdouble cosH(double cosh) {

return Math.cosh(cosh);
};

/**
* 正弦
*
* @param sin
* @return
*/
publicstaticdouble sin(double sin) {

return Math.sin(sin);
};

/**
* 雙曲正弦
*
* @param sinh
* @return
*/
publicstaticdouble sinH(double sinh) {

return Math.sinh(sinh);
};

/**
* 三角正切
*
* @param tan
* @return
*/
publicstaticdouble tan(double tan) {

return Math.tan(tan);
};

/**
* 雙曲正切
*
* @param tanh
* @return
*/
publicstaticdouble tanH(double tanh) {

return Math.tanh(tanh);
};

/**
* 將矩形坐標(x,y)轉換成極坐標(r,thet)
*
* @param x
* @param y
* @return
*/
publicstaticdouble aTan2(double x, double y) {

return Math.atan2(x,y);
};

// ----------------取整運算------------------
/**
* 取整,返回小於目標數的最大整數(地板函數)
*
* @param number
* @return
*/
publicstaticdouble floor(double number) {

return Math.floor(number);
};

/**
* 取整,返回大於目標數的最小整數(天花板函數)
*
* @param number
* @return
*/
publicstaticdouble ceil(double number) {

return Math.ceil(number);
};

/**
* 四捨五入取整
*
* @param number
* @return
*/
publicstaticdouble round(double number) {

return Math.round(number);
};

publicstaticfloat round(float number) {

return Math.round(number);
};

/**
* 平方根
*
* @param number
* @return
*/
publicstaticdouble sqrt(double number) {

return Math.sqrt(number);
};

/**
* 立方根
*
* @param number
* @return
*/
publicstaticdouble cbrt(double number) {

return Math.cbrt(number);
};

/**
* 歐拉數e的n次冪
*
* @param number
* @return
*/
publicstaticdouble exp(double number) {

return Math.exp(number);
};

/**
* sqrt(x2+y2),沒有中間溢出或下溢
*
* @param number
* @param number2
* @return
*/
publicstaticdouble hypot(double number, double number2) {

return Math.hypot(number,number2);
};

/**
* 按照IEEE754標准規定,對兩個參數進行余數運算
*
* @param number
* @param number2
* @return
*/
publicstaticdouble IEEEremainder(double number, double number2) {

return Math.IEEEremainder(number,number2);
};

/**
* 乘方
*
* @param number
* @param number2
* @return
*/
publicstaticdouble pow(double number, double number2) {

return Math.pow(number,number2);
};

/**
* 自然對數
*
* @param number
* @return
*/
publicstaticdouble log(double number) {

return Math.log(number);
};

/**
* 底數為10的對數
*
* @param number
* @return
*/
publicstaticdouble log10(double number) {

return Math.log10(number);
};

/**
* 參數與1之和的自然對數
*
* @param number
* @return
*/
publicstaticdouble log1p(double number) {

return Math.log1p(number);
};

// ------------符號相關運算------------------
/**
* 絕對值
*
* @param number
* @return
*/
publicstaticdouble abs(double number) {

return Math.abs(number);
};

publicstaticint abs(int number) {

return Math.abs(number);
};

publicstaticfloat abs(float number) {

return Math.abs(number);
};

publicstaticlong abs(long number) {

return Math.abs(number);
};

/**
* 符號賦值
*
* @param magnitude
* @param sign
* @return帶有第二個浮點數符號的第一個浮點參數
*/
publicstaticdouble Sign(double magnitude, double sign) {

return Math.Sign(magnitude,sign);
};

publicstaticfloat Sign(float magnitude, float sign) {

return Math.Sign(magnitude,sign);
};

/**
* 符號函數
*
* @param number
* @return number等於0,返回0;number大於0,返回1;number小於0,返回-1
*/
publicstaticfloat Sign(float number) {

return Math.signum(number);
};

publicstaticdouble Sign(double number) {

return Math.signum(number);
};

/**
* 找出最大值
*
* @param number
* @param number2
* @return
*/
publicstaticdouble max(double number, double number2) {

return Math.max(number,number2);
};

publicstaticint max(int number, int number2) {

return Math.max(number,number2);
};

publicstaticfloat max(float number, float number2) {

return Math.max(number,number2);
};

publicstaticlong max(long number, long number2) {

return Math.max(number,number2);
};

/**
* 計算最小值
*
* @param number
* @param number2
* @return
*/
publicstaticlong min(long number, long number2) {

return Math.min(number,number2);
};

publicstaticint min(int number, int number2) {

return Math.min(number,number2);
};

publicstaticfloat min(float number, float number2) {

return Math.min(number,number2);
};

publicstaticdouble min(double number, double number2) {

return Math.min(number,number2);
};

/**
*
* @param start
* @param direction
* @return第一個參數和第二個參數之間與第一個參數相鄰的浮點數
*/
publicstaticdouble nextAfter(double start, double direction) {

return Math.nextAfter(start,direction);
};

publicstaticfloat nextAfter(float start, float direction) {

return Math.nextAfter(start,direction);
};

/**
*
* @param number
* @return比目標數略大的浮點數
*/
publicstaticfloat nextUp(float number) {

return Math.nextUp(number);
};

publicstaticdouble nextUp(double number) {

return Math.nextUp(number);
};

/**
* 隨機數
*
* @return
*/
publicstaticdouble random() {

return Math.random();
};
}

閱讀全文

與java是如何實現演算法相關的資料

熱點內容
鎖定伺服器是什麼意思 瀏覽:375
場景檢測演算法 瀏覽:607
解壓手機軟體觸屏 瀏覽:338
方舟pv怎麼轉伺服器 瀏覽:99
數據挖掘中誤差值演算法函數 瀏覽:118
php開發套件 瀏覽:190
伺服器的spi板是什麼 瀏覽:896
解壓縮全能王中文密碼是什麼 瀏覽:80
javaftp伺服器上傳文件 瀏覽:103
演算法設計中文版pdf 瀏覽:81
視頻壓縮形式怎麼改 瀏覽:368
perl程序員 瀏覽:789
電子表格對比命令 瀏覽:610
php循環輸出數組內容 瀏覽:750
電腦加密能不能強制關掉 瀏覽:616
趣味單人解壓桌游 瀏覽:212
oppo手機谷歌伺服器無法核實什麼 瀏覽:320
軟體怎麼加密華為 瀏覽:222
掃地機怎麼安裝app 瀏覽:319
考研結合特徵值計演算法 瀏覽:516