排序算法

冒泡排序

void bubbulingSort(int[] nums){
        for(int i = 0; i < nums.length; i++){
            for(int j = i + 1; j < nums.length; j++){
                if(nums[i] > nums[j]){
                    int tmp = nums[i];
                    nums[i] = nums[j];
                    nums[j] = tmp;
                }
            }
        }
    }

選擇排序

void selectedSort(int[] nums){
        int min = 0;
        for(int i = 0; i < nums.length; i++){
            min = i;
            for(int j = i + 1; j < nums.length; j ++){
                if(nums[min] > nums[j]){
                    min = j;
                }
            }
            int tmp = nums[i];
            nums[i] = nums[min];
            nums[min] = tmp;
        }
    }

複雜度

排序算法 平均時間複雜度 最壞時間複雜度 空間複雜度 是否穩定
冒泡排序 O(n2) O(n2) O(1)
選擇排序 O(n2) O(n2) O(1) 不是
直接插入排序 O(n2) O(n2) O(1)
歸併排序 O(nlogn) O(nlogn) O(n)
快速排序 O(nlogn) O(n2) O(logn) 不是
堆排序 O(nlogn) O(nlogn) O(1) 不是
希爾排序 O(nlogn) O(ns) O(1) 不是
計數排序 O(n+k) O(n+k) O(n+k)
基數排序 O(N∗M) O(N∗M) O(M)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章