排序算法

1.冒泡排序

实现原理:

  1. 数组从从低位到高位,相邻的两位之间比大小,将值较大的放在后边,
    值小的放在前一位,最终数组中最大值移动到了最高位;
  2. 去除已排好序的高位,数组的前几位(未排好序)继续步骤1的操作,最终实现由小到大排序。

Java代码实现

public class BubbleSort {
     
    public static void main(String[] args) {
     
        int[] arr = {
     5,4,1,3};
        bubbleSort(arr);
        for (int i = 0; i < arr.length; i++) {
     
            System.out.println(arr[i]);
        }
    }
    public static void bubbleSort(int[] arr){
     
        if (arr == null || arr.length < 2){
     
            return;
        }else {
     
            for (int end = arr.length-1;end > 0;end--){
     
                for (int i = 0; i < end; i++) {
     
                    if(arr[i] > arr[i+1]){
     
                        swap(arr,i,i+1);
                    }
                }
            }
        }
    }
    public static void swap(int[] arr,int i,int j){
     
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

结果:

1
3
4
5

2.选择排序

实现原理:

  1. 设置最小值索引minIndex为最低位的索引,数组从最小位以此与该索引值对比,如果小于该值,将该索引替换minIndex,最后找到整个数组的最小值,将最低位与最小值替换;
  2. 除去已排好序的前几位,数组后部分重复步骤1,实现有小到大排序。

Java代码实现

public class SelectionSort {
     
    public static void main(String[] args) {
     
        int[] arr = {
     5,4,1,3};
        selectionSort(arr);
        for (int i = 0; i < arr.length; i++) {
     
            System.out.println(arr[i]);
        }
    }
    public static void selectionSort(int[] arr){
     
        for (int i = 0; i < arr.length - 1; i++) {
     
            int minIndex = i;
            for (int j = i + 1;j < arr.length;j++){
     
                minIndex = arr[j] < arr[minIndex] ? j : minIndex;
            }
            swap(arr,i,minIndex);
        }
    }
    public static void swap(int[] arr,int i,int j){
     
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

结果:

1
3
4
5

你可能感兴趣的:(排序算法)