十大排序算法Java實現
阿新 • • 發佈:2018-03-11
nbsp main 計數 計數器 希爾 sele style div lec
1.冒泡排序Bubble Sort
public class BubbleSort { public static void main(String[] args) { int[] arr = {2,5,7,1,6,4,9}; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length - 1 - i ; j++) { if(arr[j]>arr[j+1]){ inttemp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; } } } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); //1245679 } } }
代碼解釋: 外層for循環可以當成是一個計數器:控制內層for循環的次數。
每一次外圈循環完成後會將最大元素排到最後一位,這樣下一次內圈循環就不必比較相對最後兩位元素了,於是內圈循環次數減少相應的數值
2.選擇排序Selection Sort
public class SelectionSort { public static void main(String[] args) { int[] arr = {2,5,7,1,6,4,9}; int minIndex,temp; for (int i = 0; i < arr.length-1; i++) { minIndex = i; for (int j = i+1; j < arr.length; j++) {if(arr[j]<arr[minIndex]){ minIndex = j; } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); //1245679 } } }
3.插入排序Insertion Sort
public class InsertionSort { public static void main(String[] args) { int[] arr = { 2, 5, 7, 1, 6, 4, 9 }; int preIndex, current; for (int i = 1; i < arr.length; i++) { preIndex = i - 1; current = arr[i]; while (preIndex >= 0 && arr[preIndex] > current) { arr[preIndex + 1] = arr[preIndex]; preIndex--; } arr[preIndex + 1] = current; } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); //1245679 } } }
4.希爾排序Shell Sort
public class ShellSort { public static void main(String[] args) { int[] arr = { 2, 5, 7, 1, 6, 4, 9 }; int temp, j; int gap = 1; while (gap < arr.length / 3) { gap = gap * 3 + 1; } for (; gap > 0; gap = (int) Math.floor(gap / 3)) { for (int i = gap; i < arr.length; i++) { temp = arr[i]; for (j = i - gap; j > 0 && arr[j] > temp; j -= gap) { arr[j + gap] = arr[j]; } arr[j + gap] = temp; } } for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); // 1245679 } } }
5.歸並排序Merge Sort
後邊的會陸續更新
十大排序算法Java實現