1. 程式人生 > >基於比較的內排序演算法(三)

基於比較的內排序演算法(三)

前面發了兩篇內排序的文章。(一)中當時歸併排序並沒有寫出,(二)中今天發現在非遞迴quickSort中stack<node*> 存在記憶體洩露,並且主程式選項功能支援不是很好,所以今天又練習寫了一遍。

大規模排序時,發現1million整形資料大小為6.8M,int在當前平臺佔4B

1million = 1000000 = 106 ≈220  總容量=4B*220 =4M≈6.8M,因為這裡面還有空格、回車還有檔案自身的一些資訊佔容量。100million資料大小為673M,1billion資料大小為6.6G。各種檔案系統大小限制在下有說明。當前系統最大申請記憶體可達400G。

C/C++原始碼:sort.cpp

功能:七種常見內排序演算法

C/C++原始碼:data.cpp

功能:隨機生成一定規模的隨機資料

執行結果:

資料規模10無序資料集,迭代1W次

10_10000

資料規模100有無序資料集,迭代1024次

100_1024_unsorted

資料規模100有序資料集,迭代1024次

100_1024_sorted

資料規模10W無序資料集

10W_unsorted

資料規模10W有序資料集(注意quickSort效能下降)

10W_sorted

資料規模100W無序資料集

100W

1Billion無序資料集(quick,heap,merge,其它O2的方法已經淘汰)

 注意在小規模如果資料集全部可以裝入記憶體,不考慮換頁影響的話,三種排序時間複雜度都是O(nlgn),其中資料顯示快排是時間最快,歸併時間與其差不多,堆排慢於其它兩種方法,大概是1.5倍關係。但是當10億資料,記憶體容量約為4G。快排與堆排需要遍歷遍歷整個陣列,會造成顛簸,而歸併的性質決定了它每次處理的資料有很強的區域性性,不會很大顛簸,所以歸併排比其它兩種效能提高數倍。

 10yi

 
  NTFS(Windows):支援最大分割槽2TB,最大檔案2TB
 
  FAT16(Windows):支援最大分割槽2GB,最大檔案2GB
 
  FAT32(Windows):支援最大分割槽128GB,最大檔案4GB
 
  Ext2
 
  最大檔案大小: 1TB
 
  最大檔案極限: 僅受檔案系統大小限制
 
  最大分割槽/檔案系統大小: 4TB
 
  最大檔名長度: 255 字元
 
  預設最小/最大塊大小: 1024/4096 位元組
 
  預設inode分配: 每4096位元組為1
 
  在強制FS檢查前的最大裝載: 20(可配置)
 
  //REDHAT9預設是ext3的檔案系統
 
  Ext3
 
  最大檔案大小: 1TB
 
  最大檔案極限: 僅受檔案系統大小限制
 
  最大分割槽/檔案系統大小: 4TB
 
  最大檔名長度: 255 字元
 
  預設最小/最大塊大小: 1024/4096 位元組
 
  預設inode分配: 每4096位元組為1
 
  在強制FS檢查前的最大裝載: 20(可配置)
 
  ReiserFS
 
  最大檔案大小: 1TB
 
  最大檔案極限: 32k目錄,42億檔案
 
  最大分割槽/檔案系統大小: 4TB
 
  最大檔名長度: 255 字元
 
  JFS
 
  最小檔案系統大小 16 MB
 
  最大檔案大小: 受體系結構限制
 
  最大檔案極限: 受檔案系統大小限制
 
  預設最小/最大塊大小: 1024/4096 位元組
 
  預設inode分配: 動態

相關推薦

基於比較排序演算法

前面發了兩篇內排序的文章。(一)中當時歸併排序並沒有寫出,(二)中今天發現在非遞迴quickSort中stack<node*> 存在記憶體洩露,並且主程式選項功能支援不是很好,所以今天又練習寫了一遍。 大規模排序時,發現1million整形資料大小為6.8M,in

java排序演算法------選擇排序

選擇排序 基本思想:每一趟從待排序的資料元素中選擇最小(或最大)的一個元素作為首元素,直到所有元素排完為止,簡單選擇排序是不穩定排序。 選擇排序的時間複雜度和空間複雜度分別為 O(n2 ) 和 O(1) 程式碼實現: public static void s

java 實現 常見排序演算法快速排序

大家好,我是烤鴨:        今天分享一下基礎排序演算法之快速排序。快速排序是內部排序(基於比較排序)中最好的比較演算法。   1.     快速排序:

排序演算法——快速排序

快速排序(英語:Quicksort),簡稱快排,一種排序演算法。在平均狀況下,排序個專案要次比較。在最壞狀況下則需要次比較。 運作方式如下: 1.從陣列中挑出一個元素,作為基準,一般是第一個元素。 2.重新排序數列,所有比基準值小的元素擺放在基準前面,所有比基準值大的元素擺在基準後面(相

排序演算法-- 堆排序

堆排序 堆排序演算法結合了插入排序和歸併排序演算法的優點,和插入排序一樣,堆排序不需要額外申請空間。它是一種原地排序的演算法;和歸併排序一樣,堆排序的執行時間也是O(nlgn)。堆排序利用“堆”這種資

排序演算法:計數排序與桶排序

插入排序、堆排序、歸併排序等排序方法,在排序的最終結果中,各個元素的次序依賴於他們之間的比較,我們把這一類的排序演算法稱為比較排序。在最壞情況下,任何比較排序演算法都要經過 Omega(nlgn)次比較。因此堆排序和歸併排序都是漸近最優的比較排序演算法。

圖——基本的圖演算法拓撲排序

圖——基本的圖演算法(三)拓撲排序 1. 基本概念 對於一個有向無環圖G = (V, E)來說,其拓撲排序就是G中所有頂點的一種線性排序,這種排序滿足如下條件:如果圖G中包含邊(a, b),即由頂點a指向頂點b的有向邊,那麼在G的拓撲排序中,頂點a一定處於頂點b前面(因此如果有向

從零開始學演算法插入排序

從零開始學演算法(三)插入排序 插入排序 演算法介紹 演算法原理 演算法簡單記憶說明 演算法複雜度和穩定性 程式碼實現 插入排序 程式碼是Javascript語言寫的(幾乎是虛擬碼) 演算

聚類演算法——基於密度的聚類演算法以 DBSCAN 為例

      上一篇部落格提到 K-kmeans 演算法存在好幾個缺陷,其中之一就是該演算法無法聚類哪些非凸的資料集,也就是說,K-means 聚類的形狀一般只能是球狀的,不能推廣到任意的形狀。本文介紹一種基於密度的聚類方法,可以聚類任意的形狀。       基於密度的聚類是

理解GBDT演算法——基於梯度的版本

上一篇中我們講到了GBDT演算法的第一個版本,是基於殘差的學習思路。今天來說第二個版本,可以說這個版本的比較複雜,涉及到一些推導和矩陣論知識。但是,我們今天可以看到,兩個版本之間的聯絡,這個是學習演算法的一個重要步驟。 這篇博文主要從下面這幾個方面來說基於梯度

排序演算法比較排序----計數排序和基數排序

前邊的幾篇文章介紹的幾種排序演算法都是比較排序,接下來的文章將會介紹兩種非比較排序。 計數排序: 計數排序通過雜湊的方法將一組資料對映到一個數組裡,最後將陣列中的數依次讀取,並寫進原來的陣列,讀出的資

【影象配準】基於灰度的模板匹配演算法:劃分強度一致法PIU

簡介: 前面幾篇文章介紹了一些比較基本的基於灰度的影象配准算法: 本文將介紹一種類似的相似度測量演算法,叫做劃分強度一致法(Partitioned Intensity Uniformity,PI

linux4.10.8 核移植---裁剪

conf .cn 需要 正常 多少 分享 內核 col make 一、裁剪內核 1.1 第一次修改   現在的內核大小為2.8M左右,要裁剪到2.0M以下,畢竟給內核分區就只有2.0M。         這兩個設備我們沒有,裁剪掉。   進入make menuconfig中

深入理解Java存模型——順序一致性

內存空間 寫入 方便 語言 body 一半 同步 java語言 post 本文轉自:http://www.infoq.com/cn/articles/java-memory-model-3 數據競爭與順序一致性保證 當程序未正確同步時,就會存在數據競爭。java內存模型規範

置鎖synchronized的幾個要註意的對象監視器

sta 兩種 sys 自動裝箱 read rac nal implement ted 前言 ?? 經過前面的兩篇文章的介紹,可以清楚知道,synchronized可以用於修飾一個方法 或者 代碼塊,線程要訪問這些臨界區代碼,則要先獲取對應的 對象監視器 ,從而使多個線程互斥

Java-經典排序演算法

前言: 排序演算法有很多種,如選擇排序、插入排序、氣泡排序、桶排序、快速排序等等。這裡介紹的是簡化版桶排序、氣泡排序和插入排序。 推薦一本演算法入門書——《啊哈!演算法》 1. 桶排序[簡化版]: 原理:新建一個book陣列用來標記原陣列每一個數字出現的個數。

深入理解線性迴歸演算法:淺談貝葉斯線性迴歸

前言 上文介紹了正則化項與貝葉斯的關係,正則化項對應於貝葉斯的先驗分佈,因此通過設定引數的先驗分佈來調節正則化項。本文首先介紹了貝葉斯線性迴歸的相關性質,和正則化引數λ的作用,然後簡單介紹了貝葉斯思想的模型比較,最後總結全文。   目錄 1、後驗引數分佈和預測變數分

6分鐘演示,15種排序演算法視訊

    github:https://github.com/bingmann/sound-of-sorting 排序之聲 - “Audibilization”和排序演算法的視覺化:http://panthema.net/2013/sound-of-sorting/ 視訊:https

經典排序演算法1——氣泡排序演算法詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

經典排序演算法4——折半插入排序演算法詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!