希爾排序時間複雜度O n 中的1 3是怎麼來的

時間 2021-05-02 22:17:26

1樓:設計複雜

1、首先希爾排序是一種遞減增量的排序演算法,下面使用大小為9的陣列:54、26、93、17、31、44、55、20。

2、令資料間隔為3,將該陣列分成三個子陣列,如下圖所示,為下圖中灰色的部分。

3、對每乙個子陣列都進行插入排序操作,將排序好的子陣列合併到乙個陣列當中。這個時候,會發現,每個數字都會務必接近他應該存在的位置。

4、這是間隔為3的子陣列排序後的結果,發現該排序後的數列非常接近我們需要的遞減或者遞增序列。下一步只需要,縮小間隔進行重複性操作即可

5、最後改變間隔,使間隔變成4,這個時候子陣列反而有4組。這個說明希爾排序(shell sort)是乙個不穩定的排序。

2樓:仙戈雅

希爾排序時間複雜度的指數具體數值目前是比較模糊的,並沒有乙個統一的取值,它取決於增量。但已知的就是指數不是平方級的,即不是o(n^2),而是o(n^m(m>1<2))也就是說指數m不會大於等於2是介於[1,2)半閉半開區間。

什麼是程式語言?一共有哪幾種語言?

3樓:賀淑珍光女

計算機語言的種類非常的多,總的來說可以分成機器語言,組合語言,高階語言三大類。

計算機所能識別的語言只有機器語言,即由0和1構成的**。但通常人們程式設計時,不採用機器語言,因為它非常難於記憶和識別。

目前通用的程式語言有兩種形式:組合語言和高階語言。

組合語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的識別符號,更容易識別和記憶。

高階語言是目前絕大多數程式設計者的選擇。和組合語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆疊、暫存器等,這樣就大大簡化了程式中的指令。同時,由於省略了很多細節,程式設計者也就不需要有太多的專業知識。

高階語言主要是相對於組合語言而言,它並不是特指某一種具體的語言,而是包括了很多程式語言,如目前流行的vb、vc、foxpro、delphi等,這些語言的語法、命令格式都各不相同。

計算機程式語言的程式設計軟體需要什麼語言?

程式語言與程式設計師有什麼區別?

4樓:匿名使用者

程式語言是一種客觀存在的東西,被程式設計牛人發明以後,逐漸完善就成了一種規則!

程式是通過程式設計人員製作編譯來用來解決問題而形成的,寫程式時候需要程式語言,程式語言在程式設計人員的利用下才成形成程式。

說的有點憋!我個人理解,有理解更深的,請賜教!!!

5樓:張少

漢語和中國人的區別!!!

6樓:雨天零度

程式語言分為高階語言

、組合語言和機器語言,比如c語言就是高階語言。那c語言舉例,程式語言跟法語德語乙個道理,不一樣的是法語德語是用於我們跟法國人德國人交流,而程式語言是我們跟機器交流的語言類。

可以吧程式解釋為機器讀得懂的文章。高階語言寫的命令轉換成組合語言再編譯成機器語言就成了程式。就像漢語寫成一篇文章轉換成德語的,德國人才看的懂。

程式語言都有哪些?

7樓:小其我的世界

快速了解6個程式語言

什麼是程式語言

8樓:拱富貴顧羅

計算機語言的種類非常的多,總的來說可以分成機器語言,組合語言,高階語言三大類

9樓:匿名使用者

程式語言(programming language)是一種被標準化的交流技巧,用來向計算機發出指令,定義電腦程式,讓程式設計師能夠準確地定義計算機所需要使用的資料,並精確地定義在不同情況下所應當採取的行動的一種計算機語言。

程式語言可以分成機器語言、組合語言、高階語言三大類。計算機領域已發明了上千不同的程式語言,而且每年仍有新的程式語言誕生

如果學會了程式設計,在it行業裡很吃香的。