方法一: package basic.javastu; public class NumberTest {
創新互聯建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都做網站、成都網站建設、成都外貿網站建設、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的修文網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
/** * 實現冒泡程序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("排序前的數組各個值:");
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("排序后的清舉姿數組各個值:");
for(i=0;ilen;i++)
{
System.out.print(numb[i]+"\t");
}
}
}
方法二: package basic.javastu; public class NumberTest2 {
/** * 實現冒泡程序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("排序前答虧的數組各個值:");
for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
swap(numb);
System.out.println("數組排序后:"); 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 {
/** * 實現冒泡程序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("排序前的數組各個值:");
for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
swap(numb);
System.out.println("數組排序后:"); 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;
}
}
} } }
冒泡排序是比較經典的排序算法。代碼如下:
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
拓展資料:
原理:比較兩個相鄰的元素,將值大的元素交換至右端。
思路:依次比較相鄰的兩個數,將小數放在前面,大數放在后面。即在第一趟:首先比較第1個和第2個數,將并雹卜小數放前,大數放后。然后比較第2個數和第3個數,將小數放前,大數放后,如此繼續,直至比較最后肆薯兩個數,將小數放前,大數放后。重復第一趟步驟,直至全部排序完成。
第一趟比較完成后,最后一個數一定是數組中最大的一個數,所以第二趟比較的時候最后一個數不參與比較;
第二趟比較完成后,倒數第二個數也一定是數組中第二大的數,所以第三趟比較的時候最后兩個數不絕穗參與比較;
依次類推,每一趟比較次數-1;
??
舉例說明:要排序數組:int[]?arr={6,3,8,2,9,1};?
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
參考資料:冒泡排序原理
你好!很高絕慶猜興能幫到你。
由于你剛學Java,所以一些編程規范是需要注意的,而我提供給你的答案看起來雖然有點復雜,不過采用了面向對象的編程思想,盡量做到低耦合高內聚,同時冒泡算法也做了升級,為差激冒泡的高級快速排序算法,不過為了對比,也保存了傳統的冒泡算法。
需要講解一下,算法本身不難,難在如何做到編程規范、以及方便修改、易于修改、使得程序靈活、低耦合高內聚。
算法部分請看Bubble類,里面有兩種算法,有注釋。
主類為TestBubble,主要用于調用Bubble對象運行算法、StuInfo對象提供學生作者信息、Info對象提供運行過程中提示信息。
運行結果如下(Bubble類為核心算法類):
************************************
run:
請輸入您將要輸入整數的個數:
10
請輸并型入一串數字進行冒泡排序,注意:每次只輸入一個,輸完則回車
1:10
2:23
3:11
4:56
5:45
6:26
7:59
8:28
9:84
10:79
初始序列的數組為:
10 23 11 56 45 26 59 28 84 79
學號:200815009* 班級:08軟件3班 姓名:葉科良
排序好的數組為:
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();
}
/**
* 構造方法
* 調用初始化學生數據、接收命令行整數、展示結果3個成員方法
*/
public TestBubble() {
initMemb();
initData();
runBubble();
showResult(this.getIntArray());
}
/**
* 初始化學生數據
*/
private void initData() {
stuInfo.setStuNum("200815009*");
stuInfo.setStuClass("08軟件3班");
stuInfo.setStuName("葉科良");
info.setInputIntNumInfo("請輸入您將要輸入整數的個數:");
info.setInputIntInfo("請輸入一串數字進行冒泡排序,注意:每次只輸入一個,輸完則回車");
info.setShowInputInfo("初始序列的數組為:");
info.setShowResultInfo("排序好的數組為:");
info.setInputErrorInfo("對不起,輸入有誤!請輸入整數.");
}
/**
* 接收命令行整數,使用冒泡算法
*/
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());
}
}
/**
* 展示結果
*/
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點抗 mandLineBubbleRunner = 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;//輸入整數個數
/**
* 從命令行中讀取需要輸入的整數個數
* @return 需要輸入的整數個數
*/
public int getArraySize() {
Scanner reader1 = new Scanner(System.in);
num = reader1.nextInt();
return num;
}
/**
* 指定數組大小,從命令行接收整數
* @param arraySize 數組大小
* @return 原始整數數組
*/
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;
}
/**
* 打印原始輸入數據
* @param intArray
*/
public void showAcceptAsIntArray(int[] intArray){
for (int i = 0; i getNum(); i++) {
System.out.print(intArray[i] + " ");
}
}
/**
* 取得數組大小
* @return
*/
public int getNum() {
return num;
}
}
class Bubble {
/**
* 給定一個數組,使用冒泡算法進行排序
* @param acceptArray 給定的一個數組
* @return 排序好的數組
*/
public static int[] getResultAsIntArray(int[] acceptArray) {
int i, temp;
for (i = 0; i (acceptArray.length - 1); i++) {//兩兩進行比較,符合條件的進行交換
if (acceptArray[i] acceptArray[i + 1]) {
temp = acceptArray[i];
acceptArray[i] = acceptArray[i + 1];
acceptArray[i + 1] = temp;
}
}
return acceptArray;
}
/**
* 快速冒泡排序算法
* @param r 輸入的整數數組
* @param first 數組第一個下標
* @param end 數組最后一個下標
* @return 排好序的整數數組
*/
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) { //利用遞歸反復劃分
if (first end) {
int pivot = partition(r, first, end); //調用劃分函數
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;//提示用戶輸入整數個數的消息語句
private String inputIntInfo;//提示用戶輸入整數的消息語句
private String showInputInfo;//提示顯示用戶輸入整數的消息語句
private String inputErrorInfo;//提示用戶輸入有誤消息語句
private String showResultInfo;//提示顯示排序結果
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;//學生學號
private String stuName;//學生姓名
private String stuClass;//學生班級
@Override
public String toString() {
return "學號:" + 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;
}
}
文章題目:java冒泡排序代碼6的簡單介紹
轉載來源:http://vcdvsql.cn/article24/ddpioce.html
成都網站建設公司_創新互聯,為您提供靜態網站、網站改版、網站策劃、域名注冊、建站公司、營銷型網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯