0.0.0 时间复杂度,排序

2019-05-09  本文已影响0人  RockyLuo_290f

常数时间的操作: 一个操作和样本的数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。

选择排序,插入排序, 冒泡排序,时间复杂度O(n^2) , 额外空间复杂度O(1)

选择排序

    public void selectSort(int[] array) {
        int temp = 0;
        if(array == null || array.length < 2) {
            return;
        }
        
        for(int i = 0; i < array.length - 1; i++) {
            
            for(int j = i+1; j < array.length; j++) {
                if(array[i] > array[j]) {
                    temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }

        }
        return;
    }

插入排序

    public void insertSort(int[] array) {
        
        if(array == null || array.length < 2 ) {
            return;
        }
        int key = 0;
        for(int i = 1; i < array.length; i++) {
            key = array[i];
            int j = i-1;
            while(j >=0 && array[j] > key) {
                array[j+1] = array[j];
                j--;
            }
            array[j+1] = key;
        }
    }

冒泡排序

    public void bubbleSort(int[] array) {
        if(array == null || array.length < 2) {
            return;
        }
        int temp = 0;
        for(int i=0; i< array.length-1; i++) {
            for(int j=i+1; j < array.length; j++) {
                if(array[i] > array[j]) {
                    temp = array[j];
                    array[j] = array[i];
                    array[i] = temp;
                }
            }
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读