两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

請牢記:程序=數(shù)據(jù)結構+算法

1. 數(shù)據(jù)結構發(fā)展史

1) 起源:

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

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

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

2) 無結構階段

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

3)結構化階段

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

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

4)面向對象階段

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


2.何為算法

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

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

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

相關代碼如下:

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

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


點贊(3)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:

一點編程也不會寫的:零基礎C語言學練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學奧賽或C++選手的 必學C++課程

藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導課程

Dotcpp在線編譯      (登錄可減少運行等待時間)