![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
文章平均质量分 56
俊先
相信努力的意义,通过努力证明努力是有用的,有价值的
展开
-
2、快速排序
一、前言快速排序思想:选择一个基准值,一趟排序下来,基准值左边部分都比基准值小,右边部分都比基准值大。基准值左边部分跟右边部分如此反复(递归),最终完成排序。二、分析#如下列表a=[6,2,7,4,2,5,10]由图可分析:以6为基准数,按照快速排序思想,基准数左边小于基准数,基准数右边大于基准数。我们把左指针看作基准数的左边,右指针看作基准数的右边,因此我们可以在右指针寻找比基准数小的放在左指针处,在左指针寻找比基准数大的放在右指针处。如右指针指向10,比基准数大,右指针向前继续寻找,原创 2022-03-27 13:16:13 · 560 阅读 · 0 评论 -
1、冒泡排序算法
一、前言冒泡排序思想:相邻的元素两两比较,较大的数下沉,较小的数冒起来,这样一趟比较下来,最大(小)值就会排列在一端。整个过程如同气泡冒起,因此被称作冒泡排序。如下动画所示二、原理算法原理比较相邻的元素。如果第一个比第二个大,就交换他们两个三、分析#给定以下列表使用冒泡排序a=[11,2,6,4,2,5,10]由上图我们可知,相邻元素交换,一共需要N-1躺,每趟指针移动到哪里结束呢?由图可知,第一趟指向索引值为N-2,第二趟指向索引值为N-3…因此可写如下程序a=[11,2,原创 2022-03-26 17:40:07 · 798 阅读 · 0 评论 -
0、时间复杂度与空间复杂度
一、前言小明的代码运行一次要花5s, 占用内存5MB。小李的代码运行一次要花10s, 占用内存50MB。哪个人的代码更好呢?无疑是时间短,占用内存少由此可见, 运行时间的长短和占用内存空间的大小, 是衡量程序好坏的重要因素二、时间复杂度1、吃一个长度为10cm的面包,3s能吃1cm的面包,需要多长时间能吃完?3s*10=30s如果用一个函数来表达吃掉整个面包所需要的时间, 可以记作T(n)= 3n, n为面包的长度。2、类比程序:void eat1(int n){ for(in原创 2022-03-20 12:16:07 · 312 阅读 · 0 评论