选择排序

  1. public class P {
  2. public static void selectionSort(int[] arr) {
  3. for (int i = 0; i < arr.length - 1; ++i) {
  4. int temp = arr[i];
  5. int flag = i;
  6. for (int j = i + 1; j < arr.length; ++j) {
  7. if (arr[j] < temp) {
  8. temp = arr[j];
  9. flag = j;
  10. }
  11. }
  12. if (i != flag) {
  13. arr[flag] = arr[i];
  14. arr[i] = temp;
  15. }
  16. }
  17. }
  18. public static void main(String[] args) {
  19. int[] arr = {2, 5, 7, 2, 1};
  20. P.selectionSort(arr);
  21. for (int a : arr) {
  22. System.out.println(a);
  23. }
  24. }
  25. }

插入排序

  1. public class P {
  2. public static void insertSort(int[] arr) {
  3. int temp;
  4. int h;
  5. for (int i = 1; i < arr.length; ++i) {
  6. temp = arr[i];
  7. if (arr[i] < arr[i - 1]) {
  8. for (h = i - 1; h >= 0 && temp < arr[h]; --h) {
  9. arr[h + 1] = arr[h];
  10. }
  11. arr[h + 1] = temp;
  12. }
  13. }
  14. }
  15. public static void main(String[] args) {
  16. int[] arr = {2, 5, 7, 2, 1};
  17. P.insertSort(arr);
  18. for (int a : arr) {
  19. System.out.println(a);
  20. }
  21. }
  22. }

希尔排序

  1. import java.util.Arrays;
  2. public class P {
  3. public static void main(String[] args) {
  4. int[] arr = {1, 2, 3, 5, 1, 2};
  5. shellSort(arr);
  6. System.out.println(Arrays.toString(arr));
  7. }
  8. public static void shellSort(int[] arr) {
  9. int temp;
  10. for (int gap = arr.length / 2; gap >= 1; gap /= 2) {
  11. for (int i = gap; i < arr.length; ++i) {
  12. for (int j = i - gap; j >= 0; j -= gap) {
  13. if (arr[j] > arr[j + gap]) {
  14. temp = arr[j + gap];
  15. arr[j + gap] = arr[j];
  16. arr[j] = temp;
  17. }
  18. }
  19. }
  20. }
  21. }
  22. }

归并排序

  1. public class Sort {
  2. public static void merge(int[] a, int lo, int mid, int hi) {
  3. int i = lo, j = mid + 1;
  4. int[] aux = new int[hi + 1];
  5. for (int k = lo; k <= hi; ++k) {
  6. aux[k] = a[k];
  7. }
  8. for (int k = lo; k <= hi; ++k) {
  9. if (i > mid) {
  10. a[k] = aux[j++];
  11. } else if (j > hi) {
  12. a[k] = aux[i++];
  13. } else if (aux[j] < aux[i]) {
  14. a[k] = aux[j++];
  15. } else {
  16. a[k] = aux[i++];
  17. }
  18. }
  19. }
  20. }