初識Java(Java陣列 陣列排序演算法

2021-08-18 14:44:27 字數 3730 閱讀 8736

1.1  氣泡排序

在程式設計中,經常需要將一組數列進行排序,這樣更加方便統計與查詢。

氣泡排序是最常用的陣列排序演算法之一,它排序陣列元素的過程總是將小數往前放、大數往後放,類似水中氣泡往上公升的動作,所以稱作氣泡排序。

( 1 )基本思想

氣泡排序的基本思想是對比相鄰的元素值,如果滿足條件就交換元素值,把較小的元素移動陣列前面,把大的元素移動陣列後面(也就是兩個元素交換位置),這樣較小的元素就想氣泡一樣從底部上公升到頂部。

( 2 )演算法示例

冒泡演算法由雙層迴圈實現,其中外層迴圈用於控制排序輪數,一般為要排序的陣列長度減 1 次,因為最後一次迴圈只剩下乙個陣列元素,不需要對比,同時陣列已經完成排序。而內層迴圈主要用於對比陣列中每個臨近元素的大小,以確定是否交換位置,對比和交換次數隨排序輪數而減少。

( 3 )演算法實現

eg :實現氣泡排序,正排序。

public class bubblesort;         //建立乙個陣列,這個陣列元素是亂序

bubblesort sorter = new bubblesort();          //建立氣泡排序類的物件

sorter.sort(array);                            //呼叫排序方法將陣列排序

}/**

* 氣泡排序

*@param array 要排序的陣列

*/public void sort(int array)}}

showarray(array);                                  //輸出氣泡排序後的陣列元素

}/**

* 顯示陣列中的所有元素

*@param array 要顯示的陣列

*/public void showarray(int array)

system.out.println();

}}

執行結果為 :> 1 > 3 > 4 > 15 > 24 > 63 

氣泡排序的主要思想是:把相鄰兩個元素進行比較,如滿足一定條件則進行交換(如判斷大小或日期前後等),每次迴圈都將最大(或最小)的元素排在最後,下一次迴圈是對陣列中其他的元素進行類似操作。

1.2  直接選擇排序

直接選擇排序方法是屬於選擇排序的一種,它的排序速度要比氣泡排序快一些,也是常用的排序演算法。

( 1 )基本思想

直接選擇排序的基本思想是將排序位置與其他陣列元素分別對比,如果滿足條件就交換元素值,注意這裡區別氣泡排序,不是交換相鄰元素,而是把滿足條件的元素與指定的排序位置交換(如從最後乙個元素開始排序),這樣排序好的位置逐漸擴大,最後整個陣列都成為已排序好的格式。

與氣泡排序相比,直接選擇排序的交換次數要少很多,所以速度更快些。

( 2 )演算法示例

每一趟從待排序的資料元素中選出最小(或最大)的乙個元素,順序地放在已排好序的數列的最後,直到全部待排序的資料元素排完。

初識陣列資源 [ 63 4 24 1 3 15 ]

第一趟排序後 [ 15 4 24 1 3 ] 63

第二趟排序後 [ 15 4 3 1 ] 24 63

第三趟排序後 [ 1 4 3 ] 15 24 63

第四趟排序後 [ 1 3 ] 4 15 24 63

第五趟排序後 [ 1 ] 3 4 15 24 63

( 3 )演算法實現

實現直接選擇排序,正排序。

/**

* 直接選擇排序演算法例項

*/public class selectsort;             //建立乙個陣列

selectsort sorter = new selectsort();              //建立直接選擇排序類的物件

sorter.sort(array);                              //呼叫排序物件的方法將陣列排序

}     

/*** 直接選擇排序法

* @param array 要排序的陣列

*/public void sort(int array)

}//在交換位置 array.length-i 和 index(最大值)上的兩個數

int temp = array[array.length-i];                 //把第乙個元素值儲存到臨時變數中

array[array.length-i] = array[index];             //把第二個元素值儲存到第乙個元素單元中

array[index] = temp;                             //把臨時變數也就是第乙個元素原值儲存到第二個元素中

}showarray(array);                                 //輸出直接選擇排序後的陣列值

}/**

* 顯示陣列中的所有元素

* @param array 要顯示的陣列

*/public void showarray(int array)

system.out.println();

}}

執行結果為 : > 1 > 3 > 4 > 15 > 24 > 63

1.3  反轉排序

反轉排序就是以相反的順序把原有陣列的內容重新排序。反轉排序演算法在程式開發中也經常用到。

( 1 )基本思想

就是把陣列最後乙個元素與第乙個元素替換,倒數第二個與第二個元素替換,以此類推,直到所有陣列元素反轉替換。

( 2 )演算法示例

反轉排序是對陣列兩邊的元素進行替換,所以只需要迴圈陣列長度的半數次,如陣列長度為 7 ,那麼 for 迴圈只需要迴圈 3 次 。

eg :

初始陣列資源 [ 10 20 30 40 50 60 ]

第一趟排序後 60 [ 20 30 40 50 ] 10

第二趟排序後 60 50 [ 30 40 ] 20 10

第三趟排序後 60 50 40 30 20 10

( 3 )演算法實現

實現反轉排序。

/**

* 反轉排序演算法例項

*/public class reversesort;             //建立乙個陣列

reversesort sorter = new reversesort();            //建立反轉排序類的物件

sorter.sort(array);                             //呼叫排序物件的方法將陣列反轉

}/**

*直接選擇排序法

*@param array 要排序的陣列

*/public void sort(int array)

system.out.println("陣列反轉後的內容:");

showarray(array);                                 //輸出排序後的陣列值

}/**

*顯示陣列中的所有元素

*@param array 要顯示的陣列

*/public void showarray(int array)

system.out.println();

}}

執行結果為 :

陣列原有內容 :         10  20  30  40  50  60

陣列反轉後的內容 :   60  50  40  30  20  10

Java Java自學筆記(六) 陣列

一維陣列的定義與訪問 定義資料型別 陣列名 new 資料型別 陣列長度 資料型別就是陣列中儲存元素的資料型別 方括號就是定義的陣列 陣列名其實就是乙個變數名,儲存是陣列的引用 陣列的起始位址 new 運算子會在堆中分配一塊連續的儲存空間,把這塊連續的儲存空間的引用 起始位址 儲存到陣列中 int d...

Java Java中陣列的基本操作

1.計算陣列中最大值 2.計算陣列中最小值 3.計算陣列值之和 4.陣列拼接 5.陣列擷取 6.陣列列印 7.陣列反轉 public class arrayutils return max 2.計算陣列中最小值 public static int arraymin int a return ret ...

初識 塊狀陣列

問題 給出乙個長串,然後給出n個操作,操作有兩種,在某個位置插入乙個字元,或者查詢第x個位置上的字元是什麼 對於這個問題,我們有兩種解決方案。1 陣列 查詢 o 1 但是插入最壞可以達到 o len 2 鍊錶 插入 o 1 但是查詢最壞也可以達到o len 所以如何優化這個問題。這裡介紹一種資料結構...