1. 請把下面的java代碼用偽代碼寫出來
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),杭錦后企業(yè)網(wǎng)站建設(shè),杭錦后品牌網(wǎng)站建設(shè),網(wǎng)站定制,杭錦后網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,杭錦后網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
偽代碼(Pseudocode)是一種算法描述語言。
使用偽代碼的目的是為了使被描述的算法可以容易地以任何一種編程語言(Pascal,C,Java,etc)實(shí)現(xiàn)。因此,偽代碼必須結(jié)構(gòu)清晰、代碼簡單、可讀性好,并且類似自然語言。
介于自然語言與編程語言之間。以編程語言的書寫形式指明算法職能。
使用偽代碼, 不用拘泥于具體實(shí)現(xiàn)。相比程序語言(例如Java, C++,C, Dephi 等等)它更類似自然語言。
它是半角式化、不標(biāo)準(zhǔn)的語言??梢詫⒄麄€算法運(yùn)行過程的結(jié)構(gòu)用接近自然語言的形式(可以使用任何一種你熟悉的文字,關(guān)鍵是把程序的意思表達(dá)出來)描述出來。
String path = "***"File f = new File(path);public void test (F f)File []fs = f遍歷文件夾;for(。){ if(fs[i]是文件){ 輸入 }else{ 遞歸test(fs[i]); }}。
2. JAVA 偽代碼
提示輸入一個大于2且11的數(shù)字
輸入一整型數(shù)值給Vertices,
if(Vertices 3 || Vertices 11){
提示重新輸入且應(yīng)輸入
退出程序
}else{
生成一個Vertices * Vertices 大小的數(shù)組Graph,
填充數(shù)組 :行號與列號相同填充0,其余填充10以內(nèi)隨機(jī)數(shù)
交換元素:以[i][j]位置的數(shù)值與[j][i]位置的數(shù)值互換
最后打印數(shù)組各元素
}
3. 請把下列用java代碼 用偽代碼寫出來
偽代碼(Pseudocode)是一種算法描述語言。使用偽代碼的目的是為了使被描述的算法可以容易地以任何一種編程語言(Pascal,C,Java,etc)實(shí)現(xiàn)。因此,偽代碼必須結(jié)構(gòu)清晰、代碼簡單、可讀性好,并且類似自然語言。 介于自然語言與編程語言之間。以編程語言的書寫形式指明算法職能。使用偽代碼, 不用拘泥于具體實(shí)現(xiàn)。相比程序語言(例如Java, C++,C, Dephi 等等)它更類似自然語言。它是半角式化、不標(biāo)準(zhǔn)的語言??梢詫⒄麄€算法運(yùn)行過程的結(jié)構(gòu)用接近自然語言的形式(可以使用任何一種你熟悉的文字,關(guān)鍵是把程序的意思表達(dá)出來)描述出來。
String path = "***"
File f = new File(path);
public void test (F f)
File []fs = f遍歷文件夾;
for(。){
if(fs[i]是文件){
輸入
}else{
遞歸test(fs[i]);
}
}
4. 偽代碼怎么寫
偽代碼(Pseudocode)是一種算法描述語言。
使用偽代碼的目的是為了使被描述的算法可以容易地以任何一種編程語言(Pascal,C,Java,etc)實(shí)現(xiàn)。因此,偽代碼必須結(jié)構(gòu)清晰、代碼簡單、可讀性好,并且類似自然語言。
介于自然語言與編程語言之間。 它以編程語言的書寫形式指明算法的職能。
相比于程序語言(例如Java, C++,C, Dephi 等等)它更類似自然語言。它是半角式化、不標(biāo)準(zhǔn)的語言。
我們可以將整個算法運(yùn)行過程的結(jié)構(gòu)用接近自然語言的形式(這里,你可以使用任何一種你熟悉的文字,中文,英文 等等,關(guān)鍵是你把你程序的意思表達(dá)出來)描述出來. 使用偽代碼, 可以幫助我們更好的表述算法, 不用拘泥于具體的實(shí)現(xiàn). 人們在用不同的編程語言實(shí)現(xiàn)同一個算法時意識到,他們的實(shí)現(xiàn)(注意:這里是實(shí)現(xiàn),不是功能)很不同。尤其是對于那些熟練于不同編程語言的程序員要理解一個(用其他編程語言編寫的程序的)功能時可能很難,因?yàn)槌绦蛘Z言的形式限制了程序員對程序關(guān)鍵部分的理解。
這樣偽代碼就應(yīng)運(yùn)而生了。 當(dāng)考慮算法功能(而不是其語言實(shí)現(xiàn))時,偽代碼常常得到應(yīng)用。
計算機(jī)科學(xué)在教學(xué)中通常使用虛擬碼,以使得所有的程序員都能理解。 綜上,簡單的說,讓人便于理解的代碼。
不依賴于語言的,用來表示程序執(zhí)行過程,而不一定能編譯運(yùn)行的代碼。在數(shù)據(jù)結(jié)構(gòu)講算法的時候用的很多。
5. 偽代碼的寫法
類Pascal語言的偽代碼的語法規(guī)則是: 在偽代碼中,每一條指令占一行(else if,例外)。指令后不跟任何符號(Pascal和C中語句要以分號結(jié)尾)。
偽代碼實(shí)例如下:
IF 九點(diǎn)以前 THEN
do 私人事務(wù);
ELSE 9點(diǎn)到18點(diǎn) THEN
工作;
ELSE
下班;
END IF
這樣不但可以達(dá)到文檔的效果,同時可以節(jié)約時間。更重要的是,使結(jié)構(gòu)比較清晰,表達(dá)方式更加直觀。
偽代碼(Pseudocode)是一種算法描述語言。使用偽代碼的目的是為了使被描述的算法可以容易地以任何一種編程語言(Pascal,C,Java,etc)實(shí)現(xiàn)。因此,偽代碼必須結(jié)構(gòu)清晰、代碼簡單、可讀性好,并且類似自然語言。 介于自然語言與編程語言之間。
它以編程語言的書寫形式指明算法的職能。相比于程序語言(例如Java, C++,C, Dephi 等等)它更類似自然語言。它是半角式化、不標(biāo)準(zhǔn)的語言。
我們可以將整個算法運(yùn)行過程的結(jié)構(gòu)用接近自然語言的形式(這里,你可以使用任何一種你熟悉的文字,中文,英文 等等,關(guān)鍵是你把你程序的意思表達(dá)出來)描述出來。使用偽代碼, 可以幫助我們更好的表述算法,不用拘泥于具體的實(shí)現(xiàn)。
6. 偽代碼的寫法
最低0.27元開通文庫會員,查看完整內(nèi)容 原發(fā)布者:wangwenjxnu 偽代碼偽代碼是用介于自然語言和計算機(jī)語言之間的文字和符號來描述算法。
每一行(或幾行)表示一個基本操作。它不用圖形符號,因此書寫方便、格式緊湊,也比較好懂,便于向程序過渡。
偽代碼的7個主要部分:(1)算法名稱(2)指令序列(3)輸入/輸出(4)分支選擇(5)賦值(6)循環(huán)(7)算法結(jié)束1.算法名稱兩種表示算法的偽代碼:過程(Procedure)函數(shù)(Function)過程和函數(shù)的區(qū)別是:過程是執(zhí)行一系列的操作,不需要返回操作的結(jié)果,無返回數(shù)據(jù);函數(shù)是執(zhí)行一系列的操作后,要將操作的結(jié)果返回,有返回數(shù)據(jù)。算法偽代碼的書寫規(guī)則:Procedure([])Function([])如:ProcedureHanoi_Tower()FunctionFac(x)表示名為Fac的一個函數(shù)。
FunctionProg(n)表示名為Prog的一個函數(shù)。2.指令序列指令序列是算法的主體。
指令序列的書寫規(guī)則:用Begin作為開始、用End作為結(jié)束;用“{”作為開始、用“/}”作為結(jié)束。例如:Begin指令序列;End或者:{指令序列;/}3.輸出/輸出輸入:Input輸出:Output或Return4.分支選擇兩種分支:IfThen{指令序列/}IfThen{。
《Java遺傳算法編程》百度網(wǎng)盤pdf最新全集下載:
鏈接:
?pwd=xv3v 提取碼: xv3v
簡介:本書簡單、直接地介紹了遺傳算法,并且針對所討論的示例問題,給出了Java代碼的算法實(shí)現(xiàn)。全書分為6章。第1章簡單介紹了人工智能和生物進(jìn)化的知識背景,這也是遺傳算法的歷史知識背景。第2章給出了一個基本遺傳算法的實(shí)現(xiàn);第4章和第5章,分別針對機(jī)器人控制器、旅行商問題、排課問題展開分析和討論,并給出了算法實(shí)現(xiàn)。在這些章的末尾,還給出了一些練習(xí)供讀者深入學(xué)習(xí)和實(shí)踐。第6章專門討論了各種算法的優(yōu)化問題。 ?
通過遺傳算法走迷宮。雖然圖1和圖2均成功走出迷宮,但是圖1比圖2的路徑長的多,且復(fù)雜,遺傳算法可以計算出有多少種可能性,并選擇其中最簡潔的作為運(yùn)算結(jié)果。
示例圖1:
示例圖2:
實(shí)現(xiàn)代碼:
import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.Iterator;
import?java.util.LinkedList;
import?java.util.List;
import?java.util.Random;
/**
* 用遺傳算法走迷宮
*
* @author Orisun
*
*/
public?class?GA {
int?gene_len;?// 基因長度
int?chrom_len;?// 染色體長度
int?population;?// 種群大小
double?cross_ratio;?// 交叉率
double?muta_ratio;?// 變異率
int?iter_limit;?// 最多進(jìn)化的代數(shù)
Listboolean[] individuals;?// 存儲當(dāng)代種群的染色體
Labyrinth labyrinth;
int?width;??????//迷宮一行有多少個格子
int?height;?????//迷宮有多少行
public?class?BI {
double?fitness;
boolean[] indv;
public?BI(double?f,?boolean[] ind) {
fitness = f;
indv = ind;
}
public?double?getFitness() {
return?fitness;
}
public?boolean[] getIndv() {
return?indv;
}
}
ListBI best_individual;?// 存儲每一代中最優(yōu)秀的個體
public?GA(Labyrinth labyrinth) {
this.labyrinth=labyrinth;
this.width = labyrinth.map[0].length;
this.height = labyrinth.map.length;
chrom_len =?4?* (width+height);
gene_len =?2;
population =?20;
cross_ratio =?0.83;
muta_ratio =?0.002;
iter_limit =?300;
individuals =?new?ArrayListboolean[](population);
best_individual =?new?ArrayListBI(iter_limit);
}
public?int?getWidth() {
return?width;
}
public?void?setWidth(int?width) {
this.width = width;
}
public?double?getCross_ratio() {
return?cross_ratio;
}
public?ListBI getBest_individual() {
return?best_individual;
}
public?Labyrinth getLabyrinth() {
return?labyrinth;
}
public?void?setLabyrinth(Labyrinth labyrinth) {
this.labyrinth = labyrinth;
}
public?void?setChrom_len(int?chrom_len) {
this.chrom_len = chrom_len;
}
public?void?setPopulation(int?population) {
this.population = population;
}
public?void?setCross_ratio(double?cross_ratio) {
this.cross_ratio = cross_ratio;
}
public?void?setMuta_ratio(double?muta_ratio) {
this.muta_ratio = muta_ratio;
}
public?void?setIter_limit(int?iter_limit) {
this.iter_limit = iter_limit;
}
// 初始化種群
public?void?initPopulation() {
Random r =?new?Random(System.currentTimeMillis());
for?(int?i =?0; i population; i++) {
int?len = gene_len * chrom_len;
boolean[] ind =?new?boolean[len];
for?(int?j =?0; j len; j++)
ind[j] = r.nextBoolean();
individuals.add(ind);
}
}
// 交叉
public?void?cross(boolean[] arr1,?boolean[] arr2) {
Random r =?new?Random(System.currentTimeMillis());
int?length = arr1.length;
int?slice =?0;
do?{
slice = r.nextInt(length);
}?while?(slice ==?0);
if?(slice length /?2) {
for?(int?i =?0; i slice; i++) {
boolean?tmp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tmp;
}
}?else?{
for?(int?i = slice; i length; i++) {
boolean?tmp = arr1[i];
arr1[i] = arr2[i];
arr2[i] = tmp;
}
}
}
// 變異
public?void?mutation(boolean[] individual) {
int?length = individual.length;
Random r =?new?Random(System.currentTimeMillis());
individual[r.nextInt(length)] ^=?false;
}
// 輪盤法選擇下一代,并返回當(dāng)代最高的適應(yīng)度值
public?double?selection() {
boolean[][] next_generation =?new?boolean[population][];?// 下一代
int?length = gene_len * chrom_len;
for?(int?i =?0; i population; i++)
next_generation[i] =?new?boolean[length];
double[] cumulation =?new?double[population];
int?best_index =?0;
double?max_fitness = getFitness(individuals.get(best_index));
cumulation[0] = max_fitness;
for?(int?i =?1; i population; i++) {
double?fit = getFitness(individuals.get(i));
cumulation[i] = cumulation[i -?1] + fit;
// 尋找當(dāng)代的最優(yōu)個體
if?(fit max_fitness) {
best_index = i;
max_fitness = fit;
}
}
Random rand =?new?Random(System.currentTimeMillis());
for?(int?i =?0; i population; i++)
next_generation[i] = individuals.get(findByHalf(cumulation,
rand.nextDouble() * cumulation[population -?1]));
// 把當(dāng)代的最優(yōu)個體及其適應(yīng)度放到best_individual中
BI bi =?new?BI(max_fitness, individuals.get(best_index));
// printPath(individuals.get(best_index));
//System.out.println(max_fitness);
best_individual.add(bi);
// 新一代作為當(dāng)前代
for?(int?i =?0; i population; i++)
individuals.set(i, next_generation[i]);
return?max_fitness;
}
// 折半查找
public?int?findByHalf(double[] arr,?double?find) {
if?(find ?0?|| find ==?0?|| find arr[arr.length -?1])
return?-1;
int?min =?0;
int?max = arr.length -?1;
int?medium = min;
do?{
if?(medium == (min + max) /?2)
break;
medium = (min + max) /?2;
if?(arr[medium] find)
min = medium;
else?if?(arr[medium] find)
max = medium;
else
return?medium;
}?while?(min max);
return?max;
}
// 計算適應(yīng)度
public?double?getFitness(boolean[] individual) {
int?length = individual.length;
// 記錄當(dāng)前的位置,入口點(diǎn)是(1,0)
int?x =?1;
int?y =?0;
// 根據(jù)染色體中基因的指導(dǎo)向前走
for?(int?i =?0; i length; i++) {
boolean?b1 = individual[i];
boolean?b2 = individual[++i];
// 00向左走
if?(b1 ==?false? b2 ==?false) {
if?(x ?0? labyrinth.map[y][x -?1] ==?true) {
x--;
}
}
// 01向右走
else?if?(b1 ==?false? b2 ==?true) {
if?(x +?1? width labyrinth.map[y][x +?1] ==?true) {
x++;
}
}
// 10向上走
else?if?(b1 ==?true? b2 ==?false) {
if?(y ?0? labyrinth.map[y -?1][x] ==?true) {
y--;
}
}
// 11向下走
else?if?(b1 ==?true? b2 ==?true) {
if?(y +?1? height labyrinth.map[y +?1][x] ==?true) {
y++;
}
}
}
int?n = Math.abs(x - labyrinth.x_end) + Math.abs(y -labyrinth.y_end) +?1;
//????? if(n==1)
//????????? printPath(individual);
return?1.0?/ n;
}
// 運(yùn)行遺傳算法
public?boolean?run() {
// 初始化種群
initPopulation();
Random rand =?new?Random(System.currentTimeMillis());
boolean?success =?false;
while?(iter_limit-- ?0) {
// 打亂種群的順序
Collections.shuffle(individuals);
for?(int?i =?0; i population -?1; i +=?2) {
// 交叉
if?(rand.nextDouble() cross_ratio) {
cross(individuals.get(i), individuals.get(i +?1));
}
// 變異
if?(rand.nextDouble() muta_ratio) {
mutation(individuals.get(i));
}
}
// 種群更替
if?(selection() ==?1) {
success =?true;
break;
}
}
return?success;
}
//? public static void main(String[] args) {
//????? GA ga = new GA(8, 8);
//????? if (!ga.run()) {
//????????? System.out.println("沒有找到走出迷宮的路徑.");
//????? } else {
//????????? int gen = ga.best_individual.size();
//????????? boolean[] individual = ga.best_individual.get(gen - 1).indv;
//????????? System.out.println(ga.getPath(individual));
//????? }
//? }
// 根據(jù)染色體打印走法
public?String getPath(boolean[] individual) {
int?length = individual.length;
int?x =?1;
int?y =?0;
LinkedListString stack=new?LinkedListString();
for?(int?i =?0; i length; i++) {
boolean?b1 = individual[i];
boolean?b2 = individual[++i];
if?(b1 ==?false? b2 ==?false) {
if?(x ?0? labyrinth.map[y][x -?1] ==?true) {
x--;
if(!stack.isEmpty() stack.peek()=="右")
stack.poll();
else
stack.push("左");
}
}?else?if?(b1 ==?false? b2 ==?true) {
if?(x +?1? width labyrinth.map[y][x +?1] ==?true) {
x++;
if(!stack.isEmpty() stack.peek()=="左")
stack.poll();
else
stack.push("右");
}
}?else?if?(b1 ==?true? b2 ==?false) {
if?(y ?0? labyrinth.map[y -?1][x] ==?true) {
y--;
if(!stack.isEmpty() stack.peek()=="下")
stack.poll();
else
stack.push("上");
}
}?else?if?(b1 ==?true? b2 ==?true) {
if?(y +?1? height labyrinth.map[y +?1][x] ==?true) {
y++;
if(!stack.isEmpty() stack.peek()=="上")
stack.poll();
else
stack.push("下");
}
}
}
StringBuilder sb=new?StringBuilder(length/4);
IteratorString iter=stack.descendingIterator();
while(iter.hasNext())
sb.append(iter.next());
return?sb.toString();
}
}
偽代碼就是告訴你算法的具體內(nèi)容,偽代碼完全可以用語言來說。
偽代碼的寫法不統(tǒng)一,況且偽代碼不能運(yùn)行,怎么轉(zhuǎn)換?
將自然語言轉(zhuǎn)換成偽代碼,反而容易些。
偽代碼只是一個算法描述語言,要執(zhí)行還需要用其他編程語言實(shí)現(xiàn)。
以下是遺傳算法的偽代碼。
BEGIN:
I = 0; //進(jìn)化種群代數(shù)
Initialize P(I); //初始化種群
Fitness P(I); //“適者生存”遺傳選擇
While(not Terminate-Condition) //不滿足終止條件時,循環(huán)
{
I ++; //循環(huán)
GA-Operation P(I); //遺傳算法運(yùn)算or操作
Fitness P(I); //“適者生存”遺傳選擇
}
END. //結(jié)束算法
希望對你有所幫助!