左神算法笔记(一)时间复杂度

时间复杂度

第一节讲解的是时间复杂度问题,所以在这里简单说明一下时间复杂度问题,时间复杂度为代码运行的基于单步时间的长度,时间复杂度在数学层面上为基于极限的一种思考,由于无法得知数据量本身的大小情况,因此算法运算的时间复杂度为当数据趋于无穷的时候需要花费的时间长度。在这里由于趋于无穷,因此将系数不再进行考虑,同时也只考虑最高次项,对其余次项进行忽略。

冒泡排序:

import java.util.Arrays;
public class Code_BubbleSort{
   
    
    public static void bubbleSort(int arr){
   
   
        if(arr == null ||arr.length<2){
   
   
            return;
        }
        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 tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }

对于冒泡排序而言,自身存在的不足是不会将swap转换放到外面单独写一个函数,如果直接在原本的代码中写入转换排序可能导致主体代码过长,反而不容易进行思路的梳理。
冒泡排序中间存在两个循环,两个循环长度N(N-1),在时间复杂度上为o(N^2)。

选择排序

public static void selectionSort(int[] arr){
   
   
	if(arr == null || arr.length<2){
   
   
		return;
	}
	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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值