stanford-oval/wikipedia huggingface dataset:
隆线隐翅虫属

| 隆线隐翅虫属 |
| --- | --- |


科学分类 
界：: 动物界 Animalia
门：: 节肢动物门 Arthropoda
纲：: 昆虫纲 Insecta
目：: 鞘翅目 Coleoptera
科：: 隱翅蟲科 Staphylinidae
亚科：: 毒隱翅蟲亞科 Paederinae
族：: 隆线隐翅虫族 Lathrobiini
亚族：: 隆线隐翅虫亚族 Lathrobiina
属：: 隆线隐翅虫属 Lathrobium Gravenhorst, 1802

种
 见正文
異名
 Abletobium Casey, 1905  Apteralium Casey, 1905  Bathrolium Gozis, 1886  Glyptomerodes Scheerpeltz, 1976  Glyptomerodoschema Scheerpeltz, 1976  Hypophylladobius Fauvel, 1885  Lathrobioma Casey, 1905  Lathrobiopsis Casey, 1905  Lathrobius Billberg, 1820  Lathrolepta Casey, 1905  Madecalobrathium Scheerpeltz, 1961  Palaeolobrathium Abdullah & Abdullah, 1968  Typhlobium Kraatz, 1856
隆线隐翅虫属（学名：Lathrobium）是隠翅虫科的一属。
下属物种

本属包括以下物种：
五諸侯五 (井宿)

| 觀測資料 曆元 J2000> 0 |
| --- | --- |
星座: 雙子座
星官: 五诸侯 (井宿)
赤經: 7h 53m 29.8s
赤緯: +26° 45′ 57″
視星等（V）: 4.97
特性
光谱分类: A3V
U−B 色指数: 0.1
B−V 色指数: 0.09
R−I 色指数: 0.05
天体测定

徑向速度 (Rv): 0.1 km/s
自行 (μ):  赤经：8 mas/yr   赤纬：- mas/yr 

其他命名
 BD+27 1499，SAO 79774，HD 64145，HR 3067 
參考資料庫
SIMBAD: 资料
雙子座φ，又名BD+27 1499，HD 64145、SAO 79774、HR 3067，是雙子座的一颗恒星，视星等为4.97，位于銀經194.19，銀緯24.7，其B1900.0坐标为赤經7h 47m 22.6s，赤緯+27° 24.7′ 29″。
西江日报

| 西江日报 |
| --- | --- |
2010年12月28日出版的西江日报头版
類型: 机关报/日报
版式: 大报
持有者: 南方报业传媒集团
出版商: 西江日报
創刊日: 1950年4月1日
語言: 简体中文
总部:  中国肇庆
發行量: 7.8万份
售價: 人民币1元
網站: 西江网
《西江日报》是中共肇庆市委机关报，于1950年4月1日创刊。报头题字由时任中国国家领导人毛泽东亲笔题写。與同一集團的《肇庆都市报道》一同使用官方網站「肇慶西江網」。
2006年，《西江日报》加盟南方报业传媒集团，现时报纸由西江日报社与南方报业合办。
虎頭蘭

| 虎頭蘭 |
| --- | --- |


科学分类 
界：: 植物界 Plantae
演化支：:  Tracheophyta
演化支：: 被子植物 Angiosperms
演化支：: 单子叶植物 Monocots
目：: 天門冬目 Asparagales
科：: 蘭科 Orchidaceae
属：: 蕙蘭屬 Cymbidium
种：: 虎頭蘭 C. hookerianum
二名法
Cymbidium hookerianum Rchb.f. (1866)

異名
 Cymbidium grandiflorum Griff. (1851)  Cyperorchis grandiflora Schltr. (1924)  Cymbidium giganteum var. hookerianum
虎頭蘭（学名：Cymbidium hookerianum），又名青蝉兰，是兰科蕙兰属中的一种附生兰花。花瓣很大，直径可达12厘米，形似虎头，故名。生长在林中树上或溪谷旁岩石上。
维基共享资源上的相關多媒體資源：Cymbidium hookerianum
五福 (愛色尼派)

五福是在公元前2世紀到公元1世紀流傳的猶太教愛色尼派所提倡的額外戒命，指人若要得到天上福份所需要遵行五條戒命。後世《聖經》研究學者相信，這五福在當時社會非常流行，所以有人拿來問耶穌，而耶穌亦因此提出了從正面思想出發的八福。
至於耶穌提出這八福的因由，其中一個理解，是耶穌不希望當時的信徒學法利賽人一樣，因為額外的戒命緣故，使原來天父頒佈的十誡反而被遺忘了。
參考

梁燕城，(2006年)，《兩約探秘》
雅各布·布伦德尔

| 雅各布·布伦德尔 |
| --- | --- |

出生: 1907年9月18日  施派尔 
逝世: 1964年2月13日  （56歲） 纽伦堡 
职业: 业余摔跤手 
雅各布·布伦德尔（德語：，1907年9月18日—1964年2月13日），德国男子摔跤运动员。他曾代表德国参加1932年和1936年夏季奥林匹克运动会摔跤比赛，获得一枚金牌和一枚铜牌。
参考资料

↑  . International Olympic Committee.   [2022-05-16]. （原始内容存档于2022-05-16）.
块椎类

| 塊椎類 化石时期：330–120 Ma  PreЄ Є O S D C P T J K Pg N     石炭紀密西西比世至早白垩世 （后裔滑体亚纲生存至今） |
| --- | --- |

Trimerorhachis insignis的头骨

科学分类 
界：: 动物界 Animalia
门：: 脊索动物门 Chordata
目：: †离片椎目 Temnospondyli
演化支：: †真離片椎類 Eutemnospondyli
演化支：: †塊椎類 Rhachitomi Watson, 1919

下级分类
 见正文
块椎类（Rhachitomi）是一类离片椎目两栖动物，得名于其尚未愈合的间椎体与侧椎体，包括大部分的离片椎目动物，如双顶螈科（Dissorophidae），引螈科（Eryopidae），先驱螈科（Archegosauridae）等，以及全椎类和现存的滑体亚纲（青蛙，蝾螈等）
下图为该演化支下级分类：
雷斯特赫厄山

47°18′28″N 12°22′59″E﻿ / ﻿47.30778°N 12.38306°E﻿ / 47.30778; 12.38306
雷斯特赫厄山（德語：），是奧地利的山峰，位於該國中部，由薩爾茨堡州負責管轄，屬於基茨比爾阿爾卑斯山脈的一部分，海拔高度1,894米，每年平均降雨量1,971毫米。
參考資料

Bundesamt für Eich- und Vermessungswesen: Österreichische Karte 1:50.000, AMAP Online （页面存档备份，存于）, abgerufen am 2. Juni 2013.
亞歷山德魯·安東紐茨

| 亞歷山德魯·安東紐茨 |
| --- | --- |
穿红衣者是亞歷山德魯·安東紐茨
出生: 1989年5月23日  （35歲） 基希讷乌 
职业: 足球員 
亞歷山德魯·安東紐茨（羅馬尼亞語：；1989年5月23日—）是一位摩爾多瓦足球運動員。在場上的位置是前鋒。他現在效力於摩爾多瓦國家足球聯賽球隊米爾沙米足球俱樂部。他也代表摩爾多瓦國家足球隊參賽。他曾效力於喀山紅寶石。
參考資料

↑  . Moldfootball.   [2015-06-04]. （原始内容存档于2016-03-03） （俄语）.
五福商圈

圖為五福路一景，左邊粉紅色建築為大統262，現已改裝並改稱大統五福店
漢來新世界中心
五福商圈，位於高雄市新興區與前金區，和三多商圈、夢時代商圈、巨蛋商圈並列高雄四大商圈。商圈包含大統五福店、大立百貨、新堀江、新興高中、漢來大飯店(漢神百貨、漢來大飯店)、高雄女中、大立精品、伯爵時尚會館、國賓大飯店、中央公園、城市光廊一帶；由於五福商圈位處南高雄核心地帶，所以在舊大統百貨燒毀之前，此地段一直都是高雄市的地王。
商業核心區

新堀江
条目：新堀江
大統五福店
漢神百貨
大立百貨
國賓大飯店
西宮站

西宮站（日语：／）可以是指日本兵庫縣西宮市車站：
西宮站 (阪神) - 阪神本線的車站。
西宮站 (JR西日本) - 西日本旅客鐵道（JR西日本）東海道本線（JR神戶線）車站。
五諸侯增七

| 觀測資料 曆元 J2000> 0 |
| --- | --- |
星座: 后髮座
星官: 
赤經: 12h 10m 31.6s
赤緯: +16° 48′ 33″
視星等（V）: 6.39
特性
光谱分类: A4V
U−B 色指数: 0.1
B−V 色指数: 0.06
R−I 色指数: 
天体测定

徑向速度 (Rv): 0.1 km/s
自行 (μ):  赤经：-12 mas/yr   赤纬：- mas/yr 

其他命名
 BD+17 2446，SAO 99973，HD 105778，HR 4632 
參考資料庫
SIMBAD: 资料
后髮座3，又名BD+17 2446，HD 105778、SAO 99973、HR 4632，是后髮座的一颗恒星，视星等为6.39，位于銀經258.3，銀緯76，其B1900.0坐标为赤經12h 5m 25.8s，赤緯+17° 76′ 57″。
斯拉夫科夫宣言

奧斯特里茨模式的參與國：奧地利、捷克、斯洛伐克
奧斯特里茨模式或斯拉夫科夫三邊關係 是中欧国家捷克、斯洛伐克及奥地利之间的鬆散合作關係。
名字

得名於捷克城鎮布爾諾附近斯拉夫科夫 (Slavkov u Brna)，或舊稱奧斯特里茨。該鎮以奧斯特里茨戰役，或史稱三皇會戰而聞名。
背景

1991年2月15日，中歐三國波蘭、匈牙利及捷克斯洛伐克（後分裂爲捷克及斯洛伐克兩國）建立起維謝格拉德集團。集團內部有考量是否應納入奧地利及斯洛文尼亞。2014年4月3日，时任捷克总统米洛什·澤曼在斯洛文尼亞首都盧布爾雅那召開記者會，宣佈斯洛文尼亞及奧地利將參加未來維謝格拉德集團。然而，匈牙利外交部長通過發言人解釋，目前維謝格拉德集團並未計劃擴張，否決了米洛什·澤曼關於納入奧地利及斯洛文尼亞的提議。
除了匈牙利方面的反對，集團內部關於因烏克蘭危機而發生的俄羅斯制裁行爲，亦存在不同觀點，該點亦成爲集團擴張的阻力。
爲達成與奧地利方面的合作，2015年1月29日捷克總理博胡斯拉夫·索博特卡及斯洛伐克總理羅拔·菲佐於布爾諾附近斯拉夫科夫與奧地利總理維爾納·法伊曼會面。三國共同簽署《奧斯特里茨宣言》。
隨後，捷克方面強調，奥斯特里茨模式並非與維謝格拉德集團竞争，而只是作爲前者的補充。
宣言全文

捷克共和國政府首腦，奧地利共和國政府首腦及斯洛伐克共和國政府首腦——博胡斯拉夫·索博特卡、維爾納·法伊曼及羅拔·菲佐——於2015年1月29日布爾諾附近斯拉夫科夫會面。該次會面的主要目的，是爲建立加強合作框架，以應對鄰國及歐洲事宜，並且增強增長及就業。三國總理同時亦談及烏克蘭東部的狀態，以及所有歐盟成員國所面臨的外部挑戰，包括打擊恐怖主義。
通過建立此次合作，捷克共和國，奧地利共和國及斯洛伐克共和國將繼續增強對共同利益的公衆意識，以及培育區域合作和歐洲融合計劃的信心，尤其需要通過區域各國人民的交流（來達到此目的）。
爲達成而成目標，上述國家政府首腦同意，爲三國間相互合作建立新模式，該模式亦應用於工作計劃中所認可的其他合作區域。三國政府首腦同意每年進行會面討論。
三國政府首腦委任對應的政府部長跟進達成一致意見的領域，同時亦委任外交部長準備三國政府首腦會面。
另见

維謝格拉德集團
中欧
參考資料

1 2  Oeschger, Roman. . 11 February 2015  [2020-06-19]. （原始内容存档于2015-05-24） （德语）.
↑  Nič, Milan. . GLOBSEC Policy Institute. 2015-02-11. （原始内容存档于2015-05-18） （英语）.
↑  Martin, Lothar. . radio.cz. 2014-04-03  [2020-06-19]. （原始内容存档于2016-04-25） （德语）.
↑   https://web.archive.org/web/20140408214154/http://www.kormany.hu/en/ministry-of-foreign-affairs/news/expanding-visegrad-group-not-on-the-agenda. （原始内容存档于2014-04-08）.  缺少或|title=为空 (帮助)
↑   (PDF). www.vlada.cz.   [2020-06-19]. （原始内容存档 (PDF)于2015-05-18） （英语）.
↑  Schubert, Gerald. . Der Standard. 2015-04-11  [2020-06-19]. （原始内容存档于2015-05-14） （德语）.
雷燕琴

| 雷燕琴 |
| --- | --- |
性别: 女
出生: 1979年10月（44歲）
国籍:  中华人民共和国
籍贯: 江西贵溪
民族: 畲族
头衔: 全国人大代表
政党:  中国共产党
网站: 全国人大代表数据库
雷燕琴（1979年10月—），江西贵溪人，畲族，中国共产党党员。中华人民共和国政治人物、第十三届全国人民代表大会江西省代表。
生平

2018年，雷燕琴被选为江西省出席第十三届全国人民代表大会代表。
參考文獻

↑  . 中国人大网.   [2020-03-16]. []
↑  . 中国政府网.   [2020-03-16]. （原始内容存档于2020-02-28）.
插值排序

插值排序（英語：）或稱為直方圖排序（英語：）是一種使用插值公式分散資料分而治之的排序演算法。插值排序也是桶排序演算法的一種變型。
插值排序遞歸算法

插值排序也是一種桶排序，排序演算法與桶排序相同，插值公式是把被排序的數字化為介於零到壹的數值，再乘以桶子的數量，得出被排序數字對應的桶子號碼，以此號碼分桶來實現桶排序。一個通用的插值公式是：
插值 = 取整數(((設算數 -­ 最小數) / (最大數 -­ 最小數)) * (桶子數量 - 1))
插值排序遞歸算法 > 插值排序遞歸算法流程

| 插值排序遞歸算法> 概况 |
| --- | --- |
類別: 排序算法
資料結構: 数组
复杂度
平均時間複雜度:  O(n+k)
最坏时间复杂度:  O(n^{2})
最优时间复杂度:  O(n)
空間複雜度:  O(n^{2})
最佳解:  O(n)
相关变量的定义
尋訪序列，找出最大值與最小值，如果相等排序完成。
設置一個定量的陣列當作空桶子。
尋訪序列，把項目一個一個放到插值對應的桶子去。
對每個不是空的桶子再次進行桶排序。
從不是空的桶子裡把項目再放回原來的序列中。
插值排序遞歸算法 > 插值排序遞歸算法實作

JavaScript code:
Array.prototype.bucketSort = function()
{//--edit date:2019/08/31 Taiwan--//
  var start = 0;
  var size = this.length;
  var min = this[0];
  var max = this[0]; 
  for (var i = 1; i < size; i++){
    if (this[i] < min){min = this[i];}
    else{ if(this[i] > max){max = this[i];} }
  }
  if (min != max){
    var bucket = new Array(size);
    for (var i = 0; i < size; i++){bucket[i] = new Array();}
    var interpolation = 0;
    for (var i = 0; i < size; i++){
      interpolation = Math.floor(((this[i] - min) / (max - min)) * (size - 1));
      bucket[interpolation].push(this[i]);
    }
    for (var i = 0; i < size; i++){
      if (bucket[i].length > 1){bucket[i].bucketSort();}//遞歸
      for(var j = 0; j < bucket[i].length; j++){this[start++] = bucket[i][j];}
    }
  }
};
插值排序演算法

| 插值排序> 概况 |
| --- | --- |
類別: 排序算法
資料結構: 数组
复杂度
平均時間複雜度:  O(n+k)
最坏时间复杂度:  O(n^{2})
最优时间复杂度:  O(n)
空間複雜度:  O(n*3)
最佳解:  O(n)
相关变量的定义
插值排序遞迴方式運用一個記錄桶子長度的陣列對應原數列，透過操作維護長度陣列可以避免遞歸演算法因記憶體堆疊而使空間複雜度變成  O(n^{2})，藉由長度陣列的分段記錄可以使用次函式動態的宣告與刪除陣列的記憶體空間，使得遞歸程序得以控制所需空間複雜度在  O(3n)，包含一個動態分配記憶體的二維陣列與一個記錄長度的陣列。但是平均時間複雜度仍可維持為  O(n+k)的高效排序方法。
動態分配記憶體的陣列也可以由鏈表、堆棧、佇列、关联数组、樹狀結構等實作，例如 Javascript 的陣列物件即適用。資料結構的不同關係著資料存取的速度進而影響到排序所需的時間。當被排序陣列內的數值是均勻分散近似等差級數時，插值排序的線性時間為  O(n)。
插值排序演算法 > 插值排序流程

設置一個桶子長度陣列記錄未完成排序桶子的長度。初始化放入(push)原始陣列的長度。
[主排序]：如果桶子長度陣列清空排序完成。如果未清空執行[分桶函數]。
[分桶函數]：從桶子長度陣列末端取出(pop)一個桶子長度執行分桶。如果最大值等於最小值該序列排序完成停止分桶。
設置一個二維陣列當作空桶子。依照插值分桶。
分桶後從不是空的桶子裡把項目逐一放回原始陣列。 並在桶子長度陣列加入(push)桶子的長度。
返回[主排序]。
插值排序演算法 > 插值排序實作

JavaScript code:
Array.prototype.interpolationSort = function()
{ //edit date:2019/07/31
  var bucketSize = new Array();
  var end = this.length;
  bucketSize[0] = end;
  while(bucketSize.length > 0){DivideToBucket(this);}

  function DivideToBucket(needSortArray){
    var size = bucketSize.pop();
    var start = end - size;
    var minimum = needSortArray[start];
    var maximum = needSortArray[start];
    for(i = start + 1; i < end; i++){
      if(needSortArray[i] < minimum){minimum = needSortArray[i];}
      else{if(needSortArray[i] > maximum){maximum = needSortArray[i];}}
    }
    if(minimum == maximum){end = end - size;}
    else{
      var interpolation = 0;
      var bucket = new Array(size);
      for( i = 0; i < size; i++){bucket[i] = new Array();}
      for(i = start; i < end; i++){
        interpolation = Math.floor(((needSortArray[i] - minimum) / (maximum - minimum)) * (size - 1));
        bucket[interpolation].push(needSortArray[i]);
      }
      for(i = 0; i < size; i++){
        if(bucket[i].length > 0){
          for(j = 0; j < bucket[i].length; j++){needSortArray[start++] = bucket[i][j];}
          bucketSize.push(bucket[i].length);
        }
      }
    }
  }
};
變種 > 插值標簽排序

| 插值標簽排序> 概况 |
| --- | --- |
類別: 排序算法
資料結構: 数组
复杂度
平均時間複雜度:  O(n+k)
最坏时间复杂度:  O(n^{2})
最优时间复杂度:  O(n)
空間複雜度:  O(2n+(n)bits)
最佳解:  O(n)
相关变量的定义
插值標簽排序(Interpolation Tag Sort)是插值排序(Interpolation Sort)的變型，應用桶排序分而治之的方法,以數學插值公式將數組資料以陣列方式分散到有限數量的桶子裡,桶子再遞歸原處理程序直到完成排序。
插值標簽排序是插值排序的遞歸排序方法,為避免遞歸造成堆疊溢出使得記憶體崩潰, 而利用一個布林資料型別的標簽陣列操做遞迴次函式以釋放記憶體。所需額外記憶體的空間複雜度約等於  2n+(n)bits，包含一個動態分配記憶體的二維陣列與一個布林資料型別的標簽陣列。除此之外關聯數組、鏈表、堆棧、佇列、樹狀結構等皆可實作成桶排序的桶子。誠如 Javascript 的陣列物件即適用於此排序方法, 資料結構的不同關係著資料存取的速度進而影響到排序所需的時間。當要被排序的陣列內的數值是均勻分布的時候使用線性時間  \Theta (n)。桶排序演算法並不是比較排序不受  O(nlogn) 下限的限制。插值標簽排序是桶排序的變型平均執行複雜度同為  O(n+k)。
變種 > 插值標簽排序 > 插值標簽排序演算法

設置一個與原始陣列等量的標簽陣列，並初始化為假值。
[主排序]判斷原始陣列所有桶子是否都已排序完成，未完成執行[分桶函數]。
[分桶函數]找出桶子內最大最小值，如果最大值等於最小值排序完成停止分桶。
設置一個二維陣列當作空桶子。依照插值分桶。
分桶後從不是空的桶子裡把項目逐一放回原始陣列。並在標簽陣列將桶子的起始位置標記為真值。
返回[主排序]。
變種 > 插值標簽排序 > 插值標簽排序實作

JavaScript code:
Array.prototype.InterpolaionTagSort = function()
{//Whale Chen 同意：「維基百科:CC BY-SA 3.0協議文本」編輯日：2019/08/04//
  var start = 1 ;
  var end = this .length;
  var Tag = new Array ( end ); //Algorithm step-1
  for ( i = 0 ; i < end; i ++ ){ Tag[ i ] = false ; }
  Tag[0] = true;
  while ( end > 0 ){ //Algorithm step-2
    while ( Tag[ --start ] == false ){ }
    DivideToBucket( this ); }
    
  function DivideToBucket( A ){
    var minimum = A[ start ];
    var maximum = A[ start ];
    for ( i = start + 1 ; i < end; i ++ ){
      if ( A[ i ] < minimum ){ minimum = A[ i ]; }
      else { if ( A [ i ] > maximum ){ maximum = A[ i ]; } }
    }
    if ( minimum == maximum ){ end = start; }//Algorithm step-3
    else { 
      var interpolation = 0 ;
      var size = end - start;
      var Bucket = new Array ( size );//Algorithm step-4
      for ( i = 0 ; i < size; i ++ ){ Bucket[ i ] = new Array ( ); }
      for ( i = start; i < end; i ++ ){ 
        interpolation = Math .floor ( ( ( A[ i ] - minimum ) / ( maximum - minimum ) ) * ( size - 1 ) );
        Bucket[ interpolation ].push( A[ i ] );
      }
      for ( i = 0 ; i < size; i ++ ){
        if ( Bucket[ i ].length > 0 ){ //Algorithm step-5
          Tag[ start ] = true ; 
          for (j = 0 ; j < Bucket[ i ].length; j ++){ A[ start ++ ] = Bucket[ i ][ j ];}
        }
      }
    }
  }//Algorithm step-6
};
變種 > 原地插值排序

| 原地插值排序> 概况 |
| --- | --- |
類別: 排序算法
資料結構: 数组
复杂度
平均時間複雜度:  O(n)
最坏时间复杂度:  O(n)
最优时间复杂度:  O(n)
空間複雜度:  O(1)
相关变量的定义
原地插值排序是插值排序的原地算法（in-place algorithm）。原地插值排序通過插值計算交換元素完成排序；但是要排序的數組必需是算術級數，例如連續整數。原地插值排序對不重複的等差數列排序，序列從頭開始計算元素的插值，插值指向元素排序好的位置，兩者相互調換位置，遞增而行至序列結尾排序完成。計算時間複雜度為： O(n)，最壞空間複雜度： O(1)。
變種 > 原地插值排序 > 原地插值排序實作

JavaScript code:
Array.prototype.in_placeInterpolationSort = function()
{//Date:2019/11/15 Arithmetic progression only//
  var n = this.length;
  var min = this[0];
  var max = this[0];
  for (var i = 1; i < n; i++){
    if ( this[i] < min ){min = this[i];}
    else{if (this[i] > max){max = this[i];}}
  } 
  var position = n;
  var temp = 0;
  for (var i = 0; i < n; i++){
    position = Math.floor(((this[i] - min) / (max - min)) * (n - 1));
    while (i != position ){ 
      temp = this[position];
      this[position] = this[i]; 
      this[i] = temp;
      position = Math.floor(((this[i] - min) / (max - min)) * (n - 1));
    } 
  } 
};
類似排序方法 > 直方圖排序 Histogram sort

直方圖排序不使用陣列物件(類似ArrayList)作桶子，而是使用一維的輔助陣列分段當作桶子。首先用插值公式敲擊桶子計算每個桶子的敲擊數量，並使用另一個陣列記錄桶子的資料數量，再把每個敲擊的數量累加，得到桶子在輔助陣列的起始位置。然後再次用插值公式把資料逐一放進桶子裏，當資料放置完畢，將輔助陣列的資料複製回原陣列，然後利用桶子的數量記錄，對每個桶子再次使用直方圖排序直到排序完成。
Array.prototype.histogramSort = function()
{//-- Edit date:2019/11/07 Taiwan --//
  var end = this.length;
  var sortedArray = new Array(end);
  var interpolation = new Array(end);
  var hitCount = new Array(end);
  var divideSize = new Array();
  divideSize[0] = end;
  while (divideSize.length > 0){distribute(this);} 
  //Repeat the distribute function instead of recursion
  function distribute(A){
    var size = divideSize.pop();
    var start = end - size;
    var min = A[start];
    var max = A[start];
    for (var i = start + 1; i < end; i++){
      if (A[i] < min){min = A[i];}
      else{if (A[i] > max){max = A[i];}}
    }
    if (min == max){end = end - size;}
    else{
      for (var i = start; i < end; i++){hitCount[i] = 0;}
      for (var i = start; i < end; i++){
        interpolation[i] = start + Math.floor(((A[i] - min ) / (max - min ) ) * (size - 1 ));
        hitCount[interpolation[i]]++;
      }
      for (var i = start; i < end; i++){
        if(hitCount[i] > 0){divideSize.push(hitCount[i]);}
      }
      hitCount[end-1] = end - hitCount[end-1];
      for (var i = end-1; i > start; i--){
        hitCount[i-1] = hitCount[i] - hitCount[i-1];
      }
      for (var i = start; i < end; i++){
        sortedArray[hitCount[interpolation[i]]] = A[i];
        hitCount[interpolation[i]]++;
      }
      for (var i = start; i < end; i++){A[i] = sortedArray[i];}
    }
  }
};
類似排序方法 > 相鄰圖排序 ProxmapSort

相鄰圖排序也是使用一維的輔助陣列當作桶子，桶子分段方式與直方圖排序相同，不同的是用插值公式將資料分配到輔助陣列的桶子時，隨後使用插入排序插入資料讓資料有序，當分配資料完成時排序完成，將輔助陣列的資料複製回原陣列。
Array.prototype.ProxmapSort = function()
{//-- Edit date:2019/11/11 Taiwan --//
  var start = 0;
  var end = this.length;
  var size = end - start;
  var sortedArray = new Array(end);
  var interpolation = new Array(end);
  var hitCount = new Array(end);
  
  for (var i = start; i < end; i++){hitCount[i] = 0;}
  var min = this[start];
  var max = this[start];
  for (var i = start+1; i < end; i++){
    if (this[i] < min){min = this[i];}
    else{if (this[i] > max){max = this[i];}}
  }
  for (var i = start; i < end; i++){
    interpolation[i] = Math.floor(((this[i] - min ) / (max - min )) * (size - 1));
    hitCount[interpolation[i]]++;
  }
  hitCount[end-1] = end - hitCount[end-1];
  for (var i = end-1; i > start; i--){
    hitCount[i-1] = hitCount[i] - hitCount[i-1];
  }
//insertion sort this[i] to correct position
  var insertIndex = 0;
  var insertStart = 0;
  for (var i = start; i < end; i++){
    insertIndex = hitCount[interpolation[i]];
    insertStart = insertIndex;
    while(sortedArray[insertIndex] != null){insertIndex++;}
    while(insertIndex > insertStart && this[i] < sortedArray[insertIndex-1]){
      sortedArray[insertIndex] = sortedArray[insertIndex-1];
      insertIndex--;
    }
    sortedArray[insertIndex] = this[i];
  }
  for (var i = start; i < end; i++){this[i] = sortedArray[i];}
};
類似排序方法 > 閃電排序 FlashSort

閃電排序不使用一維輔助陣列，而是將原始陣列視為分段的桶子，利用交換的方式將資料放入桶子。首先用插值公式計算各個點該有的資料數量，再把該數量累加得到每個點的最終位置。然後在用插值公式把資料與對應的點交換，當所有資料交換完畢，資料已經都在桶子裏，桶子是有序的所以陣列接近排序完成，當資料接近有序時使用插入排序會很快，最後使用插入排序將整個陣列完成排序。
Array.prototype.FlashSort = function()
{//-- Edit date:2019/11/24 Taiwan--//
  var start = 0;
  var end = this.length;
  var size = end - start;
  var hitCount = new Array(end);
  var min = this[start];
  var max = this[start];
  for (var i = start + 1; i < end; i++){
    if (this[i] < min){min = this[i];}
    else{if (this[i] > max){max = this[i];}}
  }    
  for (var i = start; i < end; i++){hitCount[i] = 0;}
  var interpolation = 0;
  for (var i = start; i < end; i++){
    interpolation = Math.floor(((this[i] - min ) / (max - min ) ) * (size - 1 ));
    hitCount[interpolation]++;
  }
  hitCount[0] = hitCount[0] - 1;
  for (var i = 1; i < end; i++){
    hitCount[i] = hitCount[i] + hitCount[i-1];
  }
  var temp = 0;
  var tag = new Array(end);
  for (var i = start; i < end; i++){tag[i] = false;}
  for (var i = start; i < end; i++){
    while(tag[i] == false){
      interpolation = Math.floor(((this[i] - min) / (max - min)) * (size - 1));
      tag[hitCount[interpolation]] = true;
      temp = this[hitCount[interpolation]];
      this[hitCount[interpolation]] = this[i];
      this[i] = temp;
      hitCount[interpolation]--;
    }
  }
  //insertionSort
  var key = 0;
  var j = 0;
  for(var i = 1; i < end; i++){
    key = this[i];
    j = i -1;
    while((j >= 0) && (key < this[j])){
      this[j+1] = this[j];
      j--;
    }
    this[j+1] = key;
  }
};
類似排序方法 > 插值排序混合其他排序方法

插值排序是一種桶排序，桶排序可以混合其他排序方法完成排序，若是由桶排序與插入排序混合，亦是相當高效的排序方法。但是當數列出現一個乖離很大的數值，例如數列最大值大於次大值的N倍時，數列分桶處理後分佈情形是除了最大值以外其餘元素都落入同一個桶子，緊接著第二個排序方法使用插入排序，可能會使得執行複雜度陷入 O(n^{2})，如此便失去了使用桶排序分而治之的意義與執行效能。
插值排序是使用桶排序遞歸的方式，執行遞歸以後仍然使用桶排序分散數列，這樣可以避免上述情形。如欲使得遞歸的插值排序執行複雜度陷入 O(n^{2})，則必需在整個數列呈現階乘放大的情況，相對上數列要出現這種特殊分佈情形的機率很少。
類似排序方法 > 插值排序混合其他排序方法 > 插值排序混合插入排序流程

| 插值插入排序> 概况 |
| --- | --- |
類別: 排序算法
資料結構: 数组
复杂度
平均時間複雜度:  O(n+k)
最坏时间复杂度:  O(n^{2})
最优时间复杂度:  O(n)
空間複雜度:  O(2n)
最佳解:  O(n)
相关变量的定义
尋訪序列，找出最大值與最小值，如果相等排序完成。
設置一個定量的陣列當作空桶子。
尋訪序列，並且把項目放到對應的桶子去。
在桶子內把該項目直接進行插入排序。
從不是空的桶子裡把項目再放回原來的序列中。
類似排序方法 > 插值排序混合其他排序方法 > 插值排序混合插入排序實作

JavaScript code:
Array.prototype.interpolationInsertSort = function()
{ //--Edit date:2019/09/02 Taiwan--//
  var start = 0;
  var size = this.length;
  var min = this[0];
  var max = this[0]; 
  for (var i = 1; i < size; i++){
    if (this[i] < min){min = this[i];}
    else{ if(this[i] > max){max = this[i];} }
  }
  if (min != max){
    var bucket = new Array(size);
    for (var i = 0; i < size; i++){bucket[i] = new Array();}
    var buckets = size - 1;
    var range = max - min;
    var interpolation = 0;
    var insetIndex = 0;
    var k = 0;
    for (var i = 0; i < size; i++){
      interpolation = Math.floor(((this[i] - min) / range) * buckets);
      bucket[interpolation].push(this[i]);
      insetIndex = 0;//項目放到對應桶子後，直接執行插入排序。
      while(this[i] > bucket[interpolation][insetIndex]){insetIndex++;}
      k = bucket[interpolation].length-1;
      while(k > insetIndex){bucket[interpolation][k] = bucket[interpolation][k-1]; k--;}
      bucket[interpolation][insetIndex] = this[i];
    }
    for(var i = 0; i < size; i++){
      for(var j = 0; j < bucket[i].length; j++){this[start++] = bucket[i][j];}
    }
  }
};
參考

↑  NIST Algorithm. .   [2019-06-14]. （原始内容存档于2019-06-09） （英语）. Definition: See histogram sort.
↑  en.wikipedia. .   [2019-06-14]. （原始内容存档于2021-02-22） （英语）. Another variant of bucket sort known as histogram sort or counting sort adds an initial pass that counts the number of elements that will fall into each bucket using a count array. Using this information, the array values can be arranged into a sequence of buckets in-place by a sequence of exchanges, leaving no space overhead for bucket storage.
1 2  zh.wikipedia. .   [2019-06-26]. （原始内容存档于2020-12-05） （中文）. 平均時間複雜度 O(n+k)
↑  en.wikipedia. . Wikipedia.   [2019-06-14]. （原始内容存档于2021-02-22） （英语）. Note that if k is chosen to be  k=n , then bucket sort runs in  O(n) average time, given a uniformly distributed input.
↑  NIST Algorithm. .   [2019-11-25]. （原始内容存档于2021-03-10） （英语）.
↑  en.wikipedia. .   [2019-06-14]. （原始内容存档于2019-07-26） （英语）.
↑  en.wikipedia. .   [2019-06-14]. （原始内容存档于2020-12-20） （英语）.
額外參考

[1] interpolationSort.html （页面存档备份，存于）
[2] histogramSort.html （页面存档备份，存于）
[3] The FlashSort Algorithm （页面存档备份，存于）
[4] Mathematical Analysis of Algorithms
[5] http://www.drdobbs.com/database/the-flashsort1-algorithm/184410496 （页面存档备份，存于）
額外連結

Interpolation Sort Algorithm--Whale Chen 2012/09/16
桶排序遞迴方式演算法 Bucket Sort recursive method
插值標簽排序演算法 Interpolation Tag Sort Algorithm
interpolation sort (Pascal version available) （页面存档备份，存于）
w3schools JavaScript Array Sort 測試平台 （页面存档备份，存于）
三原色光模式

相加色混合的表现。原色光投射到屏幕上，在相互重叠的地方显示出新的颜色；红色、绿色和蓝色以适当的强度组合可以产生白色。
三原色光模式（，又称RGB表色系统、RGB颜色模型、红绿蓝颜色模型，是一种加色模型，将红（Red）、绿（Green）、蓝（Blue）三原色的色光以不同的比例相加混色，以合成產生各種色彩光。
RGB颜色模型的主要目的是在电子系统中检测，表示和显示图像，比如电视和电脑，利用大腦強制視覺生理模糊化（失焦），將紅綠藍三原色子像素合成為一色彩像素，產生感知色彩（其實此真彩色並非加色法所產生的合成色彩，原因為該三原色光從來沒有重疊在一起，衹是人類為了「想」看到色彩，大腦強制眼睛失焦而形成。情況其實就有點像看那些 autostereograms 的立體圖時，大腦與眼睛扭曲才能看到「想」看的立體影像的情況）。 紅綠藍三色模型在传统摄影中也有应用。在电子时代之前，基于人类对颜色的感知，RGB颜色模型已经有了坚实的理论支撑。
RGB是一种依赖于设备的颜色空间：不同设备对特定RGB值的检测和重现都不一样，因为颜色物质（荧光剂或者染料）和它们对红、绿和蓝的单独响应水平随着制造商的不同而不同，甚至是同样的设备不同的时间也不同。
相加原色

参见：CMYK
光的三原色是红色、绿色和蓝色，三种光相加会成为白色光。這是由於人類有三種視錐細胞分別對红、绿和蓝光最敏感。
三原色光和绘画中的“三原色”不同。绘画时用三种颜色青色（Cyan）、洋红色（Magenta）和黄色（Yellow）以不同的比例配合，会产生许多种颜色。如果三种原色中最深的色料相加，理论上会成为黑色，但实际上是深灰色，因此需要獨立的黑色顏料。三色顏料加上黑色（blacK）便是「CMYK色彩空間」。
选择红绿蓝的生理原因

参见：原色
三原色的原理不是出于物理原因，而是由于生理原因造成的。人的眼睛内有几种辨别颜色的锥形感光细胞，分别对黄绿色、绿色和蓝紫色（或称靛色）的光最敏感（波长分别为564、534和420纳米），如果辨别黄绿色的细胞受到的刺激略大于辨别绿色的细胞，人的感觉是黄色；如果辨别黃綠色的细胞受到的刺激大大高于辨别綠色的细胞，人的感觉是红色。虽然三种细胞并不是分别对红色、绿色和藍色最敏感，但这三种光可以分别对三种锥形细胞产生刺激。
不同的生物眼中辨别颜色的细胞并不相同，例如鸟类眼中有四种分别对不同波长光线敏感的细胞，而一般哺乳动物只有两种，所以对它们来说只有两种原色光。
既然“三原色的原理不是出于物理原因，而是由于生理原因造成的”，那么前段所说的“用三种原色的光以不同的比例加和到一起，形成各种颜色的光”显然就不大合适。使用三原色并不足以重现所有的色彩，准确地说法应该是“将三原色光以不同的比例复合后，对人的眼睛可以形成与各种频率的可见光等效的色觉。”只有那些在三原色的色度所定义的颜色三角内的颜色，才可以利用三原色的光以非负量相加混合得到。
例如，红光与绿光按某种比例复合，对三种锥状细胞刺激后产生的色觉可与眼睛对单纯的黄光的色觉等效。但决不能认为红光与绿光按某种比例复合后生成黄光，或黄光是由红光和绿光复合而成的。
RGB颜色模型理论与应用的历史 > 摄影

早期的攝影都是以沖曬照片為主，所以是以減色法來達成。
到近代數碼攝影的流行，感光元件都以感受三原色的光來組成相片，到後來的YUV。
RGB颜色模型理论与应用的历史 > 彩色電視 > 彩色显示屏（近距離觀看）

至今為止，所有的彩色显示屏都是應用三原色光加色技術，以RGB 三原色作為子像素構成一像素，由多個像素構成整個畫面。早期的彩色显示屏主要是以陰極射線管（Cathode ray tube，CRT) 為主，其後是液晶顯示器（英語：liquid-crystal display，LCD）都是。
RGB颜色模型理论与应用的历史 > 彩色電視 > 大型彩色显示屏（遠距觀看）

大型彩色显示屏主要也應用三原色光加色技術，以 RGB 三原色 的LED構成一像素，由多個像素構成整個畫面。
RGB设备 > 三原色光模仿真彩色显示

紅綠藍的三原色光显示技術廣泛用于电视和计算机的显示器，利用紅、綠、藍三原色作為子像素組成的真色彩像素，透過眼睛及大腦的模糊化,「人類看到」不存在於顯示器上的感知色彩。最常見的有阴极射线管显示屏、LED显示屏、液晶显示屏和等离子显示屏等。三种原色光在每一象素中以0-255 (28)強度组合成从全黑色到全白色之间各种不同的颜色光，目前在计算机硬件中采取每一象素用24bit（位元）表示的方法，所以三种原色光各分到8比特，每一种原色的强度依照8比特的最高值28分为256个值。用这种方法可以组合16777216种颜色。最新的顯示卡、显示屏及軟件，已可支援到 230 , 即可以產生出 1073741824種顏色。
RGB设备 > RGBW 模仿真彩色

近年，有鑑於傳統RGB技術呈現純白色時不夠光亮及較為耗電，不少公司紛紛研發出沒有顏色過濾物料的子像素，形成純白色，並把有關技術稱為RGBW，如三星的PenTile和索尼的WhiteMagic。
RGB设备 > 光線遇上螢幕時

近距離使用手機螢幕，在室內無光線干擾下，將不完全是白色的照明燈光投射在手機螢幕上，螢幕先形成最明顯的藍光，將照明燈靠近螢幕，再次形成範圍較廣的淺綠加上邊緣小範圍紅光，把照明燈拉遠後，將這三種顏色混合一起變成白光，也能正確發覺RGB出現在使用的手機例子之一。
非线性

由于gamma校正，在计算机显示设备上的颜色输出的强度通常不是直接正比于在图象文件中R, G和B值。就是说，即使值0.5非常接近于0到1.0（完全强度）的一半，计算机显示器在显示 (0.5, 0.5, 0.5)时候的光强度通常（在标准2.2-gamma CRT/LCD上）是在显示 (1.0, 1.0, 1.0)时候的大约22%，而不是50%。
数值表示

一个颜色显示的描述是由三个数值控制的，他分别为R、G、B。但三个数值位为最大时，显示为白色，当三个数值最小时，显示为黑色。
数值表示可以使用以下几种不同的方式：
浮点：从0到1之间可用的数来表示。
百分比：从0%到100%。
整数：使用0到255之间的一字节（8比特）表示，通常表示为十进制和十六进制的数值。高端数字图像设备通常会使用更大的整数以区分更精细的阶级来表示，比如0~1023（10bit）、0~65535（16bit），或更大。
例如红色在不同方式下的表示：
| 方式 | RGB 表示 |
| --- | --- |
浮点: (1.0, 0.0, 0.0)
百分比: (100%, 0%, 0%)
八位数字: (255, 0, 0) 或  #FF0000 (十六进制)
十六位数字: (65535, 0, 0)
RGB与YUV转换公式 (RGB取值范围均为0~255)
Y=0.299R＋0.587G＋0.114B     ⁄   R=Y＋1.14V
U=－0.147R－0.289G＋0.436B    ⁄  G=Y－0.39U－0.58V
V=0.615R－0.515G－0.100B      ⁄  B=Y＋2.03U
几何表示

颜色通常都是用三种成分来定义的，不仅RGB颜色模型是这样，其它比如CIELAB和YUV也是如此。于是便采用三维空间来进行描述，把三种成分的数值当做欧几里得空间中普通笛卡尔坐标系的坐标值。在RGB模型中使用0到1之间的非负数作为立方体的坐标值，将原点（0,0,0）作为黑色，强度值沿坐标轴方向递增到达位于对角线（1,1,1）处的白色。
一个RGB组合（r,g,b）表示代表一个给定颜色的点在立方体内部、表面或者边上的三维坐标。这种表示方法使得在计算两个颜色相近程度时只需简单计算它们之间的距离：距离越短颜色越接近。