简单排序

时间复杂度为O(n^2)的排序算法

冒泡排序

  
public class BubbleSort implements ISort {


    @Override
    public void sort(int[] arr) {
        if (arr == null || arr.length <= 1) {
            return;
        }
        //这里边界只需要循环n-1次即可
        for (int i = 0; i < arr.length - 1; i++) {
            //减少不必要的循环次数
            boolean swapFlag = false;

            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) {
                    Util.swap(arr, j, j + 1);
                    swapFlag = true;
                }
            }
            if (!swapFlag) {
                break;
            }

        }

    }
}

插入排序

选择排序

以第一个元素为初始值,在后面的所有元素中找到最小值,如果这个值比初始值还小,那么就交互两个元素位置。依次类推,直到最后。

最后更新于