c++数据结构与算法初学理解笔记

6 阅读2分钟

数据结构与算法相辅相成,彼此不能独立存在

编程是工具,算法和数据结构才是灵魂

1.数据结构:

存数据,按照一系列的逻辑关系,比如说先进先出,先进后出,对应的数据结构里面处理问题的时候可能就更方便,为算法的设计提高了效率。

根据不同的数据的存储特点,可以使用不同的数据结构,然后以此来提高算法的效率。

2.算法:

输入、输出、有限步骤结束 的这样的一个程序,就可以称之为一个算法了。

算法/程序有好有坏,其判定方法就是指标。

指标分为时间复杂度、空间复杂度、稳定性

(其中 时间复杂度 考察的最多)

时间复杂度 实质 ——算法的计算次数

重点 ①算法时间复杂度: 当n→∞时算法的计算次数

②算法的实际计算次数/真实时间复杂度 实际算法计算次数

eg1:

int main(){


        int n;

        int count;

        forint i = 1 ; i < n ; i++){

                forint j = 1 ; j < n ; j++){

                        count++;

                }

​​        }

        forint i = 1 ; i < n ; i++)

                count++;

        cout<<count;

}

//算法时间复杂度:  o(n^2) ​​​​​//算法的实际计算次数/真实时间复杂度:  o(n^2+n) (取大头,∞²远大于∞本身,所以算法时间复杂度省略掉∞,同理∞³、∞²、∞相加取∞³)

eg2:

    //冒泡排序

    /*算法的时间复杂度:o(n^2)

    (这里是最坏/平均时间复杂度,对应完全逆序或随机数据的情况,最好为 o(n))

    真实时间复杂度:o((n^2)/2)

    常见的算法时间复杂度:o(1)、o(logn)、o(n)、o(n^2)、o(n^3)……*/    

 int main(){
 
 int n,a[100];

 cin>>n;

    for(int i=0;i<n;i++)

    cin>>a[i];

    for(int j=n-1;j>0;j--){

        for(int i=0;i<n-1;i++){

            if(a[i]>a[i+1])

            swap(a[i],a[i+1]);

        }

    }

    for(int i=0;i<n;i++)

    cout<<a[i]<<" ";

}