数据结构---作业1时间复杂度

简介: 数据结构---作业1时间复杂度

本专栏是对自我的平时作业错题及掌握知识不牢固的地方的总结专栏.

1.大O是一个渐进表示法,不会去表示精确的次数,cpu的运算速度很快,估计精确的没有意义。

2.

此函数有一个循环,但是循环没有被执行n次,i每次都是2倍进行递增,所以循环只会被执行log2(n)次。

3.

此函数会被递归调用n - 1次,每次操作都是一次,所以时间复杂度为n

4.

此题目中,数组元素有序,所以a,b两个数可以分别从开始和结尾处开始搜,根据首尾元素的和是否大于sum,决定搜索的移动,整个数组被搜索一遍,就可以得到结果,所以最好时间复杂度为n

5.

T(n)

=T(n-1)+n

=T(n-2)+(n-1)+n

=T(n-3)+(n-2)+(n-1)+n

=T(0)+1+2+…+(n-2)+(n-1)+n

=1+1+2+…+(n-2)+(n-1)+n

从递推公式中可以看到,第n项的值需要从n-1开始递归,一直递归到0次结束,共递归了n-1次

所以时间复杂度为n

6.

使用三次逆转法

第一次:整个数组的元素逆转一遍

第二次:逆转子数组

第三次:逆转另一个子数组

(1)标准答案:注意begin,end都是逆转的数组的下标

void reverse(int* nums, int begin, int end)
{
    while (begin < end)
    {
        int tmp = nums[begin];
        nums[begin] = nums[end];
        nums[end] = tmp;
        ++begin;
        --end;
    }
}
void rotate(int* nums, int numsSize, int k) {
    if (k > numsSize)
    {
        k %= numsSize;
    }
    reverse(nums, 0, numsSize - 1);
    reverse(nums, 0, k - 1);
    reverse(nums, k, numsSize - 1);
}

(2)我的答案:begin,end都表示的是指针

void reverse(int* begin, int* end ) {
  while (begin < end) {
    int temp = *begin;
    *begin = *end;
    *end = temp;
    begin++;
    end--;
  }
}
void rotate(int* arr,int sz, int k) {
  k = k % sz;
  reverse(arr, arr + sz - 1);
  reverse(arr, arr + k - 1);
  reverse(arr + k, arr + sz - 1);
}

相关文章
|
25天前
|
算法 搜索推荐 程序员
数据结构中时间复杂度的介绍
冒泡排序是通过重复遍历数组,比较并交换相邻元素来排序数组的。因为它包含两层嵌套循环,每层循环的最大迭代次数近似于n,所以时间复杂度是O(n²)。 通过上述分析,我们可以看到不同代码结构对算法性能有着显著的影响。在设计数据结构和算法时,理解并计算时间复杂度是非常重要的,它帮助程序员选择或优化算法,以处理更大的数据集或提高程序的运行速度。
14 2
|
2月前
|
算法
数据结构:1、时间复杂度
数据结构:1、时间复杂度
22 1
|
2月前
|
算法
数据结构之时间复杂度
数据结构之时间复杂度
|
2月前
|
机器学习/深度学习 算法 存储
[数据结构]——算法的时间复杂度和空间复杂度
[数据结构]——算法的时间复杂度和空间复杂度
|
22天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
22天前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
1月前
|
存储 算法 C语言
数据结构和算法学习记录——初识 数据结构和算法&时间复杂度
数据结构和算法学习记录——初识 数据结构和算法&时间复杂度
16 4
|
1月前
|
算法
数据结构和算法学习记录——时间复杂度、空间复杂度相关练习题
数据结构和算法学习记录——时间复杂度、空间复杂度相关练习题
14 2
|
1月前
|
算法
数据结构和算法学习记录——时间复杂度的计算(嵌套循环、大O的渐进表示法、双重循环、常数循环、strchr、冒泡排序、二分查找、斐波那契数列递归)
数据结构和算法学习记录——时间复杂度的计算(嵌套循环、大O的渐进表示法、双重循环、常数循环、strchr、冒泡排序、二分查找、斐波那契数列递归)
35 1
|
1月前
|
存储 算法 C语言
数据结构和算法——堆排序(选择排序、思路图解、代码、时间复杂度、堆排序及代码)
数据结构和算法——堆排序(选择排序、思路图解、代码、时间复杂度、堆排序及代码)
16 0