【本節目标】
通過閱讀本節内容,你将學會通過循環巧妙地實作數組排序問題,并通過控制台輸出結果分析代碼異常,解決異常,最終完成設計,初步步入算法的領域。
數組操作案例:數組排序
數組排序指的是可以将一個雜亂的數組按照順序進行碼放,但是對于數組排序總是通過一個基礎的模型完成的,例如:本次先通過一個升序排序的方式來觀察排序的處理。

圖一 排序過程
範例:數組排序分析
public class ArrayDemo {
public static void main (String args[ ]) {
int data [] = new int [] {8,9,0,2,3,5,10,7,6,1} ;
for (int y = 0 ; y < data.length ; y ++) {
if (data[y] > data[y + 1]){
int temp = data[y] ;
data[y] = data[y + 1] ;
data[y + 1] = temp ;
}
}
printArray(data) ;
}
public static void printArray(int temp []) {
for (int x = 0 ; x < temp.lenght ; x ++) {
System.out.print (temp[x] + “、”) ;
}
System.out.println() ;
}
}
圖二 運作結果一
發生數組越界,修改:
for (int y = 0 ; y < data.length-1 ; y ++)
圖三 運作結果二
public class ArrayDemo {
public static void main (String args[ ]) {
int data [] = new int [] {8,9,0,2,3,5,10,7,6,1} ;
for (int x =0 ; x < data.length ; x ++) {
for (int y = 0 ; y < data.length-1 ; y ++) {
if (data[y] > data[y + 1]){
int temp = data[y] ;
data[y] = data[y + 1] ;
data[y + 1] = temp ;
}
}
}
printArray(data) ;
}
public static void printArray(int temp []) {
for (int x = 0 ; x < temp.lenght ; x ++) {
System.out.print (temp[x] + “、”) ;
}
System.out.println() ;
}
}
圖四 執行結果三
針對于已經排好序的,不需要再次進行比較,修改
for (int y = 0 ; y < data.length-x-1 ; y ++)
圖五 執行結果四
以上的程式代碼都是通過主方法完成的,不符合面向對象的設計結構,最好的做法是将這個排序處理的操作交給一個類進行處理完成。
優化:
class ArrayUtil {
public static void sort(int data[]) { //進行數組的排序處理
for (int x =0 ; x < data.length ; x ++) {
for (int y = 0 ; y < data.length-x-1 ; y ++) {
if (data[y] > data[y + 1]){ //交換資料
int temp = data[y] ;
data[y] = data[y + 1] ;
data[y + 1] = temp ;
}
}
}
}
public static void printArray(int temp []) {
for (int x = 0 ; x < temp.lenght ; x ++) {
System.out.print (temp[x] + “、”) ;
}
System.out.println() ;
}
}
public class ArrayDemo {
public static void main (String args[ ]) {
int data [] = new int [] {8,9,0,2,3,5,10,7,6,1} ;
ArrayUtil.sort(data) ; //排序
ArrayUtil.printArray(data) ;
}
}
圖六 優化後執行結果
在以後進行類設計的時候,如果發現類中沒有屬性存在的意義,那麼定義的方法就沒有必要使用普通方法了,因為普通方法需要在有執行個體化對象産生的情況下才可以調用。
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:數組算法進階之探究轉置之法 | 帶你學《Java面向對象程式設計》之十九 更多Java面向對象程式設計文章檢視此處