排序演算法01-簡單排序
阿新 • • 發佈:2018-11-20
簡單排序演算法共三種,分別是氣泡排序、選擇排序、插入排序,這三種排序演算法的演算法複雜度均為,這三種排序演算法雖然簡單,但卻是使用頻率比較高的;
1.氣泡排序的實現原理:
氣泡排序的原理就是按照順序相鄰的比較兩個元素,如果前者大於後者,則交換位置,如下圖:
觀察可知,最大元素9已經被移動到最後的位置,同理可以完成排序。
2.選擇排序的實現原理:
選擇排序的原理就是每次選擇一個當前元素,然後向後查詢最小的元素,如果最小元素小於當前元素再將最小的元素與當前元素交換,如下圖:
3.插入排序的實現原理 :
插入排序的原理是每次選擇一個當前元素(以第二個元素開始),依次與前面的元素比較,如果小於前面的元素則繼續比較,直到找到比自己大的元素,然後插入到該元素的位置,比較過的元素都往後移一位,如下圖:
源程式如下:
// 氣泡排序 public static int[] BubbleSort(int[] arr) { for (int i = 0; i < arr.length; i++) for (int j = 0; j < arr.length - i - 1; j++) if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } return arr; } // 選擇排序 public static int[] SelectSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { int k = i; for (int j = i; j < arr.length; j++) if (arr[j] < arr[k]) k = j; int temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; } return arr; } // 插入排序 public static int[] InsertSort(int[] arr) { int temp; int j; for (int i = 1; i < arr.length; i++) { temp = arr[i]; j = i - 1; while (j >= 0 && temp < arr[j]) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = temp; } return arr; }