Java中三種常用的排序方法
今天重新學習類三種排序方法,按照排序速度依次是氣泡排序,選擇排序和插入排序。
以下示例皆為從小到大的排序
1.氣泡排序
每一次比較都可能要交換元素。
氣泡排序的思想是:
每一輪開始的時候,將第一個元素(a)開始與其後的元素(b)依次進行比較,將較大的元素(設為m)放到後面,並將m與其後的另外一個元素繼續進行比較,直到最後一個沒有排好序的元素。
在接下來一輪的排序中,剛才以及之前選出來的、已經排好順序的最大值不用參與排序。
依次類推,總共遍歷n-1輪,即可完成排序。
具體程式碼如下:
void bubble(int[] arr){
int temp;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.println("\n--bubble :");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
2.選擇排序
每次比較的時候不交換
選擇排序的思想:
每次比較的時候找到的兩個數中的較大值並記下其位置,等到當前一輪的遍歷完成之後,將最後一個未排序元素與這一輪遍歷找到的最大值交換
最多交換n-1次
程式碼如下:
void select(int[] arr){
for (int i = 0; i < arr.length; i++) {
int maxIndex = 0;
int temp = 0;
for (int j = 1; j < arr.length - i; j++) {
if (arr[maxIndex] < arr[j]) {
maxIndex = j;
}
}
temp = arr[maxIndex];
arr[maxIndex] = arr[arr.length - i - 1];
arr[arr.length - i - 1] = temp;
}
System.out.println("\n--select :");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
3.插入排序法
插入排序法思想:
將待排序的元素分為有序和無序兩種,剛開始排序的時候假設只有第一個元素是有序的,其餘n-1個元素都是無序的;
排序開始的時,將無序部分的一個元素(a)與有序部分的最後一個元素(b)進行比較,如果a<b,則將a與b交換,再將a與下一個有序元素進行比較;否則,將a加到b後面,作為有序部分的最後一個元素。
接著再從無序部分取出一個元素與有序部分的元素依次比較,直達所有元素都為有序元素。
遍歷n-1次
程式碼如下:
void insertSort(int[] arr){
for (int i = 1; i < arr.length; i++) {
int instertValue = arr[i];
for (int j = i - 1; j >= 0; j--) {
if (instertValue < arr[j]) {
arr[j+1] = arr[j];
arr[j] = instertValue;
}else {
break;
}
}
}
/* 第二種表示形式
for (int i = 1; i < arr.length; i++) {
int instertVal = arr[i];
int index = i - 1;
while (index >= 0 && instertVal < arr[index]) {
arr[index + 1] = arr[index];
index--;
}
arr[index + 1] = instertVal;
}
*/
System.out.println("\n--insertSort :");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
相關文章
- 比較Java Swing中三種註冊事件的方法Java事件
- Java Web開發Tomcat中三種部署專案的方法JavaWebTomcat
- mongodb常用的兩種group方法,以及對結果排序MongoDB排序
- 在tomcat中三種部署專案的方法Tomcat
- 用 Java 實現的八種常用排序演算法Java排序演算法
- 幾種常用的排序程式碼排序
- 元素水平垂直居中三種方法實現
- react中三種函式呼叫方法總結React函式
- 幾種常用的排序演算法排序演算法
- Treeset的兩種排序方法排序
- logmnr中三種抽取和儲存資料字典的方法
- php常用的四種排序演算法PHP排序演算法
- 【演算法】Java實現七種常用排序演算法演算法Java排序
- 八種常用排序演算法排序演算法
- Go 中的三種排序方法Go排序
- Java連線oracle資料庫的兩種常用方法JavaOracle資料庫
- 好程式設計師Java培訓分享Java集合的兩種排序方法程式設計師Java排序
- weblogic10.3中三種配置會話超時的方法Web會話
- java常用排序演算法Java排序演算法
- Java集合中的排序方法Java排序
- 簡述幾種常用的排序演算法排序演算法
- 九種常用排序的效能分析總結 [zhuan]排序
- matlab中三種計算程式執行時間方法Matlab
- Java 22中三種垃圾回收GC效能獲得了大提升JavaGC
- String中三種加法的區別
- rac的Oracle Net配置中三種模式Oracle模式
- Shell中字串排序的幾種方法字串排序
- Java 常用的 4 種加密方式Java加密
- Java ArrayList 的不同排序方法Java排序
- .NetCore中三種注入方式的思考NetCore
- Redis 中三種特殊的資料型別Redis資料型別
- smarty中三種變數的訪問方式變數
- Oracle 排序中常用的NULL值處理方法Oracle排序Null
- Java中Array的常用方法Java
- iframe跨域的幾種常用方法跨域
- 幾種常用的排序演算法之JavaScript實現排序演算法JavaScript
- 如何理解JavaScript中常用的4種排序演算法?JavaScript排序演算法
- 一遍記住Java常用的八種排序演算法與程式碼實現Java排序演算法