提示輸入一個大于2且11的數(shù)字
為鶴山等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及鶴山網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站設(shè)計、鶴山網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
輸入一整型數(shù)值給Vertices,
if(Vertices 3 || Vertices 11){
提示重新輸入且應(yīng)輸入
退出程序
}else{
生成一個Vertices * Vertices 大小的數(shù)組Graph,
填充數(shù)組 :行號與列號相同填充0,其余填充10以內(nèi)隨機數(shù)
交換元素:以[i][j]位置的數(shù)值與[j][i]位置的數(shù)值互換
最后打印數(shù)組各元素
}
方法一: package basic.javastu; public class NumberTest {
/** * 實現(xiàn)冒泡程序1 */ public static void main(String[] args) { // TODO Auto-generated method stub
int[] numb=new int[]{3,42,57,1,32,24};
int len=numb.length;
int i,j;
int temp;
System.out.println("排序前的數(shù)組各個值:");
for(i=0;ilen;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
for(i=1;i=len;i++)
{
for(j=len-1;j=1;j--)
{
if(numb[j]numb[j-1])
{
temp=numb[j];
numb[j]=numb[j-1];
numb[j-1]=temp;
}
}
}
System.out.println("排序后的數(shù)組各個值:");
for(i=0;ilen;i++)
{
System.out.print(numb[i]+"\t");
}
}
}
方法二: package basic.javastu; public class NumberTest2 {
/** * 實現(xiàn)冒泡程序2 */ public static void main(String[] args) { // TODO Auto-generated method stub
int[] numb=new int[]{3,42,57,1,32,24};
int leng=numb.length;
System.out.println("排序前的數(shù)組各個值:");
for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
swap(numb);
System.out.println("數(shù)組排序后:"); for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
} }
private static int[] swap(int[] numb) { int n2[]=numb; int len=n2.length; int i,j; int temp; for(i=1;i=len;i++)
{
for(j=len-1;j=1;j--)
{
if(n2[j]n2[j-1])
{
temp=n2[j];
n2[j]=n2[j-1];
n2[j-1]=temp;
}
}
} return n2; } }
方法三: package basic.javastu; public class NumberTest3 {
/** * 實現(xiàn)冒泡程序2 */ public static void main(String[] args) { // TODO Auto-generated method stub
int[] numb=new int[]{3,42,57,1,32,24};
int leng=numb.length;
System.out.println("排序前的數(shù)組各個值:");
for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
swap(numb);
System.out.println("數(shù)組排序后:"); for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
} }
private static void swap(int[] numb) { int len=numb.length; int i,j; int temp; for(i=1;i=len;i++)
{
for(j=len-1;j=1;j--)
{
if(numb[j]numb[j-1])
{
temp=numb[j];
numb[j]=numb[j-1];
numb[j-1]=temp;
}
}
} } }
你好!很高興能幫到你。
由于你剛學(xué)Java,所以一些編程規(guī)范是需要注意的,而我提供給你的答案看起來雖然有點復(fù)雜,不過采用了面向?qū)ο蟮木幊趟枷?,盡量做到低耦合高內(nèi)聚,同時冒泡算法也做了升級,為冒泡的高級快速排序算法,不過為了對比,也保存了傳統(tǒng)的冒泡算法。
需要講解一下,算法本身不難,難在如何做到編程規(guī)范、以及方便修改、易于修改、使得程序靈活、低耦合高內(nèi)聚。
算法部分請看Bubble類,里面有兩種算法,有注釋。
主類為TestBubble,主要用于調(diào)用Bubble對象運行算法、StuInfo對象提供學(xué)生作者信息、Info對象提供運行過程中提示信息。
運行結(jié)果如下(Bubble類為核心算法類):
************************************
run:
請輸入您將要輸入整數(shù)的個數(shù):
10
請輸入一串?dāng)?shù)字進(jìn)行冒泡排序,注意:每次只輸入一個,輸完則回車
1:10
2:23
3:11
4:56
5:45
6:26
7:59
8:28
9:84
10:79
初始序列的數(shù)組為:
10 23 11 56 45 26 59 28 84 79
學(xué)號:200815009* 班級:08軟件3班 姓名:葉科良
排序好的數(shù)組為:
10 11 23 26 28 45 56 59 79 84
源代碼如下:
***************************************************
package testBubble;
import java.io.Reader;
import java.util.Scanner;
/**
*
* @author yekeliang
*/
public class TestBubble {
private CommandLineBubbleRunner commandLineBubbleRunner;
private int arraySize;
private int[] intArray;
private StuInfo stuInfo;
private Info info;
/**
* 測試方法
* @param args
*/
public static void main(String[] args) {
TestBubble test = new TestBubble();
}
/**
* 構(gòu)造方法
* 調(diào)用初始化學(xué)生數(shù)據(jù)、接收命令行整數(shù)、展示結(jié)果3個成員方法
*/
public TestBubble() {
initMemb();
initData();
runBubble();
showResult(this.getIntArray());
}
/**
* 初始化學(xué)生數(shù)據(jù)
*/
private void initData() {
stuInfo.setStuNum("200815009*");
stuInfo.setStuClass("08軟件3班");
stuInfo.setStuName("葉科良");
info.setInputIntNumInfo("請輸入您將要輸入整數(shù)的個數(shù):");
info.setInputIntInfo("請輸入一串?dāng)?shù)字進(jìn)行冒泡排序,注意:每次只輸入一個,輸完則回車");
info.setShowInputInfo("初始序列的數(shù)組為:");
info.setShowResultInfo("排序好的數(shù)組為:");
info.setInputErrorInfo("對不起,輸入有誤!請輸入整數(shù).");
}
/**
* 接收命令行整數(shù),使用冒泡算法
*/
private void runBubble() {
try{
System.out.println(info.getInputIntNumInfo());
setArraySize(getCommandLineBubbleRunner().getArraySize());
System.out.println(info.getInputIntInfo());
setIntArray(getCommandLineBubbleRunner().getAcceptAsIntArray(getArraySize()));
System.out.println(info.getShowInputInfo());
getCommandLineBubbleRunner().showAcceptAsIntArray(getIntArray());
Bubble.quick(getIntArray());
} catch(java.util.InputMismatchException e) {
System.out.println(info.getInputErrorInfo());
}
}
/**
* 展示結(jié)果
*/
private void showResult(int intArray[]) {
System.out.println("\n" + stuInfo.toString());
System.out.println(info.getShowResultInfo());
for (int i = 0; i intArray.length; i++) {
System.out.print(intArray[i] + " ");
}
}
private void initMemb() {
stuInfo = new StuInfo();
info = new Info();
commandLineBubbleRunner = new CommandLineBubbleRunner();
}
public CommandLineBubbleRunner getCommandLineBubbleRunner() {
return commandLineBubbleRunner;
}
public void setCommandLineBubbleRunner(CommandLineBubbleRunner commandLineBubbleRunner) {
this.commandLineBubbleRunner = commandLineBubbleRunner;
}
public int getArraySize() {
return arraySize;
}
public void setArraySize(int arraySize) {
this.arraySize = arraySize;
}
public int[] getIntArray() {
return intArray;
}
public void setIntArray(int[] intArray) {
this.intArray = intArray;
}
private void getStuInfo() {}
}
/**
*
* @author 葉科良
*/
class CommandLineBubbleRunner {
public int num;//輸入整數(shù)個數(shù)
/**
* 從命令行中讀取需要輸入的整數(shù)個數(shù)
* @return 需要輸入的整數(shù)個數(shù)
*/
public int getArraySize() {
Scanner reader1 = new Scanner(System.in);
num = reader1.nextInt();
return num;
}
/**
* 指定數(shù)組大小,從命令行接收整數(shù)
* @param arraySize 數(shù)組大小
* @return 原始整數(shù)數(shù)組
*/
public int[] getAcceptAsIntArray(int arraySize) {
int[] acceptArray = new int[arraySize];
Scanner reader = new Scanner(System.in);
for (int i = 0; i getNum(); i++) {
System.out.print((i + 1) + ":");
acceptArray[i] = reader.nextInt();
}
return acceptArray;
}
/**
* 打印原始輸入數(shù)據(jù)
* @param intArray
*/
public void showAcceptAsIntArray(int[] intArray){
for (int i = 0; i getNum(); i++) {
System.out.print(intArray[i] + " ");
}
}
/**
* 取得數(shù)組大小
* @return
*/
public int getNum() {
return num;
}
}
class Bubble {
/**
* 給定一個數(shù)組,使用冒泡算法進(jìn)行排序
* @param acceptArray 給定的一個數(shù)組
* @return 排序好的數(shù)組
*/
public static int[] getResultAsIntArray(int[] acceptArray) {
int i, temp;
for (i = 0; i (acceptArray.length - 1); i++) {//兩兩進(jìn)行比較,符合條件的進(jìn)行交換
if (acceptArray[i] acceptArray[i + 1]) {
temp = acceptArray[i];
acceptArray[i] = acceptArray[i + 1];
acceptArray[i + 1] = temp;
}
}
return acceptArray;
}
/**
* 快速冒泡排序算法
* @param r 輸入的整數(shù)數(shù)組
* @param first 數(shù)組第一個下標(biāo)
* @param end 數(shù)組最后一個下標(biāo)
* @return 排好序的整數(shù)數(shù)組
*/
public static int partition(int[] r, int first, int end) {
int i, j;
i = first;
j = end;
while (i j) {
while (i j r[i] = r[j]) {
j--;
}
if (i j) {
int temp;
temp = r[i];
r[i] = r[j];
r[j] = temp;
}
}
return i;
}
public static void quick(int[] r, int first, int end) { //利用遞歸反復(fù)劃分
if (first end) {
int pivot = partition(r, first, end); //調(diào)用劃分函數(shù)
quick(r, first, pivot - 1);
quick(r, pivot + 1, end);
}
}
public static int[] quick(int[] r){
quick(r,0,r.length-1);
return r;
}
}
class Info {
private String inputIntNumInfo;//提示用戶輸入整數(shù)個數(shù)的消息語句
private String inputIntInfo;//提示用戶輸入整數(shù)的消息語句
private String showInputInfo;//提示顯示用戶輸入整數(shù)的消息語句
private String inputErrorInfo;//提示用戶輸入有誤消息語句
private String showResultInfo;//提示顯示排序結(jié)果
public String getInputIntNumInfo() {
return inputIntNumInfo;
}
public void setInputIntNumInfo(String inputIntNumInfo) {
this.inputIntNumInfo = inputIntNumInfo;
}
public String getInputIntInfo() {
return inputIntInfo;
}
public void setInputIntInfo(String inputIntInfo) {
this.inputIntInfo = inputIntInfo;
}
public String getShowInputInfo() {
return showInputInfo;
}
public void setShowInputInfo(String showInputInfo) {
this.showInputInfo = showInputInfo;
}
public String getInputErrorInfo() {
return inputErrorInfo;
}
public void setInputErrorInfo(String inputErrorInfo) {
this.inputErrorInfo = inputErrorInfo;
}
public String getShowResultInfo() {
return showResultInfo;
}
public void setShowResultInfo(String showResultInfo) {
this.showResultInfo = showResultInfo;
}
}
class StuInfo {
private String stuNum;//學(xué)生學(xué)號
private String stuName;//學(xué)生姓名
private String stuClass;//學(xué)生班級
@Override
public String toString() {
return "學(xué)號:" + getStuNum() + " 班級:" + getStuClass() + " 姓名:" + getStuName();
}
public String getStuNum() {
return stuNum;
}
public void setStuNum(String stuNum) {
this.stuNum = stuNum;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuClass() {
return stuClass;
}
public void setStuClass(String stuClass) {
this.stuClass = stuClass;
}
}
偽代碼啊,還真不好描述:
假設(shè)有N個數(shù),可以想象成所有的數(shù)分成兩部分:上部和下部,上部的是排好序的,下部的沒有。
外層循環(huán)N-1次(i從0到N-2){ //每循環(huán)一次就能讓一個下部數(shù)中最大的冒到上部來
內(nèi)層循環(huán)從0開始,循環(huán)到j(luò)(j=N-i){ //保證下部的每個位置都進(jìn)行一次冒泡判斷
如果當(dāng)前的數(shù)比它上面的一個數(shù)大,就互換位置(冒上來一次)。
/* 這是互換代碼
if(array[j]array[j+1])
{
int tmp=array[j];
array[j]=array[j+1];
array[j+1]=tmp;
}
*/
//可以想象,如果足夠大,該數(shù)會一直更新位置,一直往上冒,到達(dá)合適位置。
}
}
外層循環(huán)結(jié)束后就排好序了。
這個算法的特點就是如果一個數(shù)是下部中最大的,它就能一直往上冒,不管它當(dāng)初在什么位置,內(nèi)層一輪冒泡后它就能冒到上部去(成為上部里最小的)。N-1輪后就排好序了。
描述的不怎么好,還寫不出來的話可以直接要代碼(猜你是想自己寫出來所以沒貼代碼)
1. 請把下面的java代碼用偽代碼寫出來
偽代碼(Pseudocode)是一種算法描述語言。
使用偽代碼的目的是為了使被描述的算法可以容易地以任何一種編程語言(Pascal,C,Java,etc)實現(xiàn)。因此,偽代碼必須結(jié)構(gòu)清晰、代碼簡單、可讀性好,并且類似自然語言。
介于自然語言與編程語言之間。以編程語言的書寫形式指明算法職能。
使用偽代碼, 不用拘泥于具體實現(xiàn)。相比程序語言(例如Java, C++,C, Dephi 等等)它更類似自然語言。
它是半角式化、不標(biāo)準(zhǔ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)隨機數(shù)
交換元素:以[i][j]位置的數(shù)值與[j][i]位置的數(shù)值互換
最后打印數(shù)組各元素
}
3. 請把下列用java代碼 用偽代碼寫出來
偽代碼(Pseudocode)是一種算法描述語言。使用偽代碼的目的是為了使被描述的算法可以容易地以任何一種編程語言(Pascal,C,Java,etc)實現(xiàn)。因此,偽代碼必須結(jié)構(gòu)清晰、代碼簡單、可讀性好,并且類似自然語言。 介于自然語言與編程語言之間。以編程語言的書寫形式指明算法職能。使用偽代碼, 不用拘泥于具體實現(xiàn)。相比程序語言(例如Java, C++,C, Dephi 等等)它更類似自然語言。它是半角式化、不標(biāo)準(zhǔ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)實現(xiàn)。因此,偽代碼必須結(jié)構(gòu)清晰、代碼簡單、可讀性好,并且類似自然語言。
介于自然語言與編程語言之間。 它以編程語言的書寫形式指明算法的職能。
相比于程序語言(例如Java, C++,C, Dephi 等等)它更類似自然語言。它是半角式化、不標(biāo)準(zhǔn)的語言。
我們可以將整個算法運行過程的結(jié)構(gòu)用接近自然語言的形式(這里,你可以使用任何一種你熟悉的文字,中文,英文 等等,關(guān)鍵是你把你程序的意思表達(dá)出來)描述出來. 使用偽代碼, 可以幫助我們更好的表述算法, 不用拘泥于具體的實現(xiàn). 人們在用不同的編程語言實現(xiàn)同一個算法時意識到,他們的實現(xiàn)(注意:這里是實現(xiàn),不是功能)很不同。尤其是對于那些熟練于不同編程語言的程序員要理解一個(用其他編程語言編寫的程序的)功能時可能很難,因為程序語言的形式限制了程序員對程序關(guān)鍵部分的理解。
這樣偽代碼就應(yīng)運而生了。 當(dāng)考慮算法功能(而不是其語言實現(xiàn))時,偽代碼常常得到應(yīng)用。
計算機科學(xué)在教學(xué)中通常使用虛擬碼,以使得所有的程序員都能理解。 綜上,簡單的說,讓人便于理解的代碼。
不依賴于語言的,用來表示程序執(zhí)行過程,而不一定能編譯運行的代碼。在數(shù)據(jù)結(jié)構(gòu)講算法的時候用的很多。
5. 偽代碼的寫法
類Pascal語言的偽代碼的語法規(guī)則是: 在偽代碼中,每一條指令占一行(else if,例外)。指令后不跟任何符號(Pascal和C中語句要以分號結(jié)尾)。
偽代碼實例如下:
IF 九點以前 THEN
do 私人事務(wù);
ELSE 9點到18點 THEN
工作;
ELSE
下班;
END IF
這樣不但可以達(dá)到文檔的效果,同時可以節(jié)約時間。更重要的是,使結(jié)構(gòu)比較清晰,表達(dá)方式更加直觀。
偽代碼(Pseudocode)是一種算法描述語言。使用偽代碼的目的是為了使被描述的算法可以容易地以任何一種編程語言(Pascal,C,Java,etc)實現(xiàn)。因此,偽代碼必須結(jié)構(gòu)清晰、代碼簡單、可讀性好,并且類似自然語言。 介于自然語言與編程語言之間。
它以編程語言的書寫形式指明算法的職能。相比于程序語言(例如Java, C++,C, Dephi 等等)它更類似自然語言。它是半角式化、不標(biāo)準(zhǔn)的語言。
我們可以將整個算法運行過程的結(jié)構(gòu)用接近自然語言的形式(這里,你可以使用任何一種你熟悉的文字,中文,英文 等等,關(guān)鍵是你把你程序的意思表達(dá)出來)描述出來。使用偽代碼, 可以幫助我們更好的表述算法,不用拘泥于具體的實現(xiàn)。
6. 偽代碼的寫法
最低0.27元開通文庫會員,查看完整內(nèi)容 原發(fā)布者:wangwenjxnu 偽代碼偽代碼是用介于自然語言和計算機語言之間的文字和符號來描述算法。
每一行(或幾行)表示一個基本操作。它不用圖形符號,因此書寫方便、格式緊湊,也比較好懂,便于向程序過渡。
偽代碼的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{。
冒泡排序是比較經(jīng)典的排序算法。代碼如下:
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
拓展資料:
原理:比較兩個相鄰的元素,將值大的元素交換至右端。
思路:依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。重復(fù)第一趟步驟,直至全部排序完成。
第一趟比較完成后,最后一個數(shù)一定是數(shù)組中最大的一個數(shù),所以第二趟比較的時候最后一個數(shù)不參與比較;
第二趟比較完成后,倒數(shù)第二個數(shù)也一定是數(shù)組中第二大的數(shù),所以第三趟比較的時候最后兩個數(shù)不參與比較;
依次類推,每一趟比較次數(shù)-1;
??
舉例說明:要排序數(shù)組:int[]?arr={6,3,8,2,9,1};?
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
參考資料:冒泡排序原理
分享文章:Java冒泡偽代碼 偽代碼實現(xiàn)冒泡排序
文章轉(zhuǎn)載:http://jinyejixie.com/article6/hpcoog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、虛擬主機、網(wǎng)頁設(shè)計公司、ChatGPT、電子商務(wù)、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)