成人app

數據結構與算法

點擊打開在線編譯器,邊學邊練

請牢記:程序=數據結構+算法

1. 數據結構發展史

1) 起源:

成人app1968年美國唐?歐?克努特教授開創了數據結構的最初體系,他所著的《計算機程序設計技巧》第一卷《基本算法》是第一本較系統地闡述數據的邏輯結構和存儲結構語其操作的著作。我們一般認為本書開創了數據結構的系統概念。

70年代初,數據結構作為一門獨立的課程開始進入大學課堂。

數據結構的發展經歷三個階段:無結構階段,結構化階段和面向對象階段(和程序發展的三個階段不謀而合了)

2) 無結構階段

40~60年代見,計算機的主要應用還沒有如此普及,當時計算機主要是正對科學計算,程序設計技術以機器語言和匯編語言為主,程序處理的是存粹的數值,數據之間的關系主要是以來數學公式或者數學模型,此時數據結構概念并沒有明確形成。

3)結構化階段

成人app60~80年代,計算機開始廣泛應用于非數值處理領域,數據表示成為程序設計的重要問題,人們認識到程序設計規范化的重要性,提出了程序結構模塊化,并開始注意數據表示與操作的結構化。數據結構及抽象數據類型就是在這種情況下形成的,隨著數據規模的加大,程序的設計越來越依附于數據結構的設計,此時數據結構開始廣泛普及。

成人app此間也有非常多的數據結構相關的文獻產出,最為著名的是圖靈獎獲得者沃斯的一個著名公式:程序=數據結構+算法。

4)面向對象階段

80年代初期到現在,隨著計算機不斷普及,計算機性能以及需求不斷增加,面向對象的程序設計被逐步提出,在對象的世界中 ,程序設計中大大減少了重復設計的部分,數據結構在這個階段逐漸變得豐富,大量的封裝類出現,減少了程序設計者的負擔,數據結構因此變得更加友好。


2.何為算法

請你回答一下如何使用計算機C語言編程計算1到100的和(1+2+3+……+100),相信大多數人會直接給出以下答案:

#include <stdio.h>
int main() {
    int ans=0,i;
    for(i=1;i<=100;i++){
        ans+=i;
    }
    printf("%d",ans);
    return 0;
}

這幾乎是計算機中最為簡單的程序了,但是,這樣去完成這個功能真的好么?早在300年前的小學生高斯在課堂上被老師要求去計算這個結果,在同班同學還在手推寫結果的時候,高斯早就已經做完了,他利用等差數列求和的算法,輕易打敗了同班同學。

相關代碼如下:

#include <stdio.h>
int main() {
    int ans=(1+100)*100/2;
    printf("%d",ans);
    return 0;
}

成人app相比第一份答案,我們進行了100次的運算,才得出我們想要的結果,而對于第二份答案,我們僅進行了1次運算就得到了想要的結果,而在實際中計算機的計算遠遠不止這點計算量,以此如果我們去計算1到1000000的和呢?使用了等差數列還是一步算好,而這就是算法的魅力。



本文固定URL:http://hnsaiyang.com/course/88

上一課:數學基礎 下一課:算法基礎
第一章 數據結構入門
第二章 鏈表
第三章 棧
第四章 隊列
第五章 從C語言到C++
第六章 串,數組,矩陣,廣義表
第七章 樹
第八章 圖
第九章 算法—查找
第十章 算法—排序
第十一章 算法&競賽,思維培養
第十二章 后記
Dotcpp在線編譯      (登錄可減少運行等待時間)