1.選擇排序
思想: 每次在待排序的數(shù)字中找出最值,最后進(jìn)行交換。
代碼示例
要排序的數(shù)組為: int[] a = {3,5,2,6,37,8,64,72};
public class Test { public static void main(String[] args) { int[] a = {3,5,2,6,37,8,64,72}; selectSort(a); } public static void selectSort(int [] arr){ if(arr == null || arr.length<2) return; for(int i = 0; i <arr.length-1; i ++){ int minIndex = i; for(int j = i +1; j < arr.length;j++){ if(arr[minIndex]>arr[j]) minIndex = j; } if(i != minIndex) swap(arr, i, minIndex); } } public static void swap(int [] arr, int i, int j){ arr[i] = arr[i]^arr[j]; arr[j] = arr[i]^arr[j]; arr[i] = arr[i]^arr[j]; } }
2.冒泡排序
思想
- 冒泡排序每次能產(chǎn)生一個(gè)最大或最小的數(shù),每次都是邊比較變交換
- 下一輪比上一輪少一次比較
代碼示例
public static void bubbleSort(int [] arr){ if(arr==null ||arr.length<2) return; for(int i = arr.length-1;i >0;i--) for (int j = 0;j <i;j++) if(arr[i]<arr[j]){ swap(arr,i,j); } }
3.插入排序
將數(shù)據(jù)分為有序和無序兩部分,每次將無序的第一個(gè)數(shù)字跟前面的有序進(jìn)行比較,如果比其?。ɑ蛘叽螅┚徒粨Q,否則結(jié)束本次過程。
代碼示例
public static void insertSort(int [] arr){ if(arr == null ||arr.length<2) return; for(int i = 1;i<arr.length;i++) for(int j = i-1;j>=0&&arr[j]>arr[j+1];j--) swap(arr,j,j+1); }