【演算法與資料結構】經典排序演算法總結
1. 氣泡排序
時間複雜度:o(n2)
過程:
一開始交換的區間是0-(N-1),也就是整個陣列的整體;然後第一個數與第二個數進行比較,哪個大,哪個就放在後面;然後第二個數與第三個數進行比較,哪個大,哪個就放在後面;這樣依次交換下去,最大的數就被放到了最後;然後把互動區間從0-(N-1),變為0-(N-2),這樣第二大的數就被放到陣列倒數第二的位置;這個過程進行下去,直到區間就只有一個數;這樣陣列就變成了有序資料。
import java.util.*;
public class BubbleSort {
public int[] bubbleSort(int[] A, int n) {
for(int i=n-1;i>0;i--) {
for(int j=0;j<i;j++) {
if(A[j+1]<A[j]){
int t = A[j];
A[j] = A[j+1];
A[j+1] = t;
}
}
}
return A;
}
}
2. 選擇排序
時間複雜度:o(n2)
過程:
一開始在整個陣列上,也就是區間0-(N-1)上,選出一個最小值,把它放到位置0上;然後在區間1-(N-1)上,選出一個最小值,把它放到位置1上;這樣依次縮小範圍,直到區間內只有一個元素,那這個陣列就變得有序了。
import java.util.*;
public class SelectionSort {
public int[] selectionSort(int[] A, int n) {
for(int i = 0; i<n; i ++) {
for(int j = i + 1; j< n; j++) {
if(A[i] > A[j]) {
int t = A[i];
A[i] = A[j];
A[j] = t;
}
}
}
return A;
}
}
3. 插入排序
時間複雜度:o(n2)
過程:
首先位置1上的數跟位置0上的數進行比較,如果位置1上的數更小,那位置0上的數就向前移,把位置1上的數放到位置0上;接著位置2上的數跟位置1上的數進行比較,如果比位置1上的數小,那位置1上的數向前移,接著跟位置0上的數進行比較,如果比位置0上的數小,那位置0上的數接著向前移,然後把位置2上的數放到位置0上;那麼對於位置k上的數,就一直跟前面的數進行比較並向前移,直到小於等於它,並把位置k上的數放到這個位置。
import java.util.*;
public class InsertionSort {
public int[] insertionSort(int[] A, int n) {
// write code here
for(int i=1;i<n;i++) {
int current = A[i];
for(int j=i-1;j>=0;j--) {
if(current >=A[j]) {
break;
}else{
A[j+1] = A[j];
A[j]=current;
}
}
}
return A;
}
}
相關文章
- 資料結構與演算法整理總結---排序 2資料結構演算法排序
- JavaScript 資料結構與演算法之美 - 十大經典排序演算法JavaScript資料結構演算法排序
- 資料結構與演算法——排序資料結構演算法排序
- [資料結構與演算法] 排序演算法資料結構演算法排序
- [資料結構拾遺]字串排序演算法總結資料結構字串排序演算法
- 資料結構與演算法——排序演算法-歸併排序資料結構演算法排序
- 資料結構與演算法——排序演算法-基數排序資料結構演算法排序
- 資料結構與演算法——排序演算法-選擇排序資料結構演算法排序
- 資料結構與演算法——排序演算法-氣泡排序資料結構演算法排序
- 【資料結構與演算法】堆排序資料結構演算法排序
- 資料結構與演算法——堆排序資料結構演算法排序
- 資料結構與演算法(八):排序資料結構演算法排序
- 資料結構與演算法之排序資料結構演算法排序
- 資料結構與演算法----# 一、排序資料結構演算法排序
- 資料結構與演算法:堆排序資料結構演算法排序
- 資料結構與演算法知識點總結(4)各類排序演算法資料結構演算法排序
- 資料結構與演算法——十個排序演算法資料結構演算法排序
- 資料結構與演算法 排序與搜尋資料結構演算法排序
- 【資料結構與演算法】歸併排序資料結構演算法排序
- 資料結構與演算法-反轉排序資料結構演算法排序
- 資料結構與演算法之快速排序資料結構演算法排序
- 資料結構與演算法 基礎排序資料結構演算法排序
- 資料結構與演算法 進階排序資料結構演算法排序
- Java資料結構與排序演算法 (三)Java資料結構排序演算法
- Java資料結構與排序演算法 (一)Java資料結構排序演算法
- Java資料結構與排序演算法 (二)Java資料結構排序演算法
- 資料結構與演算法整理總結---雜湊演算法資料結構演算法
- 07 Javascript資料結構與演算法 之 排序演算法JavaScript資料結構演算法排序
- Java十大經典排序演算法最強總結Java排序演算法
- 演算法與資料結構基礎 - 排序(Sort)演算法資料結構排序
- python演算法與資料結構-快速排序(36)Python演算法資料結構排序
- 演算法與資料結構之原地堆排序演算法資料結構排序
- 演算法與資料結構高階排序演算法之歸併排序演算法資料結構排序
- 資料結構與演算法整理總結---跳錶資料結構演算法
- 資料結構與演算法整理總結---演算法複雜度資料結構演算法複雜度
- 資料結構與演算法-資料結構(棧)資料結構演算法
- 【PHP資料結構】PHP資料結構及演算法總結PHP資料結構演算法
- 資料結構與演算法:二叉排序樹資料結構演算法排序