php 算法

如何设置python为最高优先级同时修改auto mode状态

  返回  

【算法学习日志】基础排序算法(冒泡,选择,插入)

2021/8/20 19:00:55 浏览:

几个老生常谈的算法了,算是复习回顾一下吧,距离上次做算法题已经是快两年前的事情了…

看视频的时候新学了一个Comparable接口,以前没用过。

用法如:

int result = a.compareTo(b);
//a < b,result < 0
//a > b, result > 0
//a == b, result = 0

不过我只是简单回顾一下算法,好像还是用不太到这个接口,查了一下,发现Compareble的意义大概在于,要想让一个类里的对象支持比较的话,就必须实现这个接口。

题目来自力扣912,非常简单的一道升序排列数组。 

  • 冒泡排序

public class Solution {
    public int[] sortArray(int[] nums) {
        for(int i=nums.length-1;i>0;i--){
            for(int j=0;j<i;j++){
                if(nums[j] > nums[j+1]){
                    exchange(nums,j,j+1);
                }else{
                    continue;
                }
            }
        }
        return nums;
    }

    public static void exchange(int[] a,int i,int j){
        int temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
}

 最坏情况下,元素比较次数+交换次数是n^2 - n

时间复杂度O(n^2)

超时了,提交没过

  • 选择排序

public class Solution {
    public int[] sortArray(int[] nums) {
        for(int i=0;i<nums.length-1;i++){
            int minn = i;
            for(int j=i+1;j<nums.length;j++){
                if(nums[j] < nums[minn]){
                    minn = j;
                }else {
                    continue;
                }
            }
            exchange(nums,i,minnn);
        }
        return nums;
    }

    public static void exchange(int[] a,int i,int j){
        int temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
}

 时间复杂度也是O(n^2)

所以也超时了,没过

  • 插入排序

 

public class Solution {
    public int[] sortArray(int[] nums) {
        for(int i=1;i<nums.length;i++){
            for(int j=i;j>0;j--){
                if(nums[j-1] > nums[j]){
                    exchange(nums,j-1,j);
                }else{
                    break;
                }
            }
        }
        return nums;
    }

    public static void exchange(int[] a,int i,int j){
        int temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
}

 时间复杂度又是O(n^2)

 当然又超时了

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号