stanford-oval/wikipedia huggingface dataset:
归并排序
實作範例 > C語言

迭代版：
int min(int x, int y) {
    return x < y ? x : y;
}
void merge_sort(int arr[], int len) {
    int *a = arr;
    int *b = (int *) malloc(len * sizeof(int));
    int seg, start;
    for (seg = 1; seg < len; seg += seg) {
        for (start = 0; start < len; start += seg * 2) {
            int low = start, mid = min(start + seg, len), high = min(start + seg * 2, len);
            int k = low;
            int start1 = low, end1 = mid;
            int start2 = mid, end2 = high;
            while (start1 < end1 && start2 < end2)
                b[k++] = a[start1] < a[start2] ? a[start1++] : a[start2++];
            while (start1 < end1)
                b[k++] = a[start1++];
            while (start2 < end2)
                b[k++] = a[start2++];
        }
        int *temp = a;
        a = b;
        b = temp;
    }
    if (a != arr) {
        int i;
        for (i = 0; i < len; i++)
            b[i] = a[i];
        b = a;
    }
    free(b);
}
遞歸版：
// 分治-治
void mergeSort_conquer(int* array, int left, int mid, int right, int* temp) {
    // [left, mid]和[mid+1, right]两个有序数组
    int i = left;
    int j = mid + 1;
    int index = 0;
    while (i <= mid && j <= right) {
        if (array[i] < array[j]) {
            temp[index++] = array[i++];
        } else {
            temp[index++] = array[j++];
        }
    }
    // 剩余元素直接放入temp
    while (i <= mid) {
        temp[index++] = array[i++];
    }
    while (j <= right) {
        temp[index++] = array[j++];
    }
    // 放回原数组
    index = 0;
    while (left <= right) {
        array[left++] = temp[index++];
    }
}

// 分治-分
void mergeSort_divide(int* array, int left, int right, int* temp) {
    if (left < right) {
        int mid = left + (right - left) / 2;
        // 左边归并排序
        mergeSort_divide(array, left, mid, temp);
        // 右边归并排序
        mergeSort_divide(array, mid + 1, right, temp);
        // 合并两个有序序列
        mergeSort_conquer(array, left, mid, right, temp);
    }
}

void mergeSort(int* array, int size) {
    int* temp = (int*)malloc(sizeof(int) * size);
    mergeSort_divide(array, 0, size - 1, temp);
}
實作範例 > C++

迭代版：
template<typename T> // 整數或浮點數皆可使用,若要使用物件(class)時必須設定"小於"(<)的運算子功能
void merge_sort(T arr[], int len) {
    T *a = arr;
    T *b = new T[len];
    for (int seg = 1; seg < len; seg += seg) {
        for (int start = 0; start < len; start += seg + seg) {
            int low = start, mid = min(start + seg, len), high = min(start + seg + seg, len);
            int k = low;
            int start1 = low, end1 = mid;
            int start2 = mid, end2 = high;
            while (start1 < end1 && start2 < end2)
                b[k++] = a[start1] < a[start2] ? a[start1++] : a[start2++];
            while (start1 < end1)
                b[k++] = a[start1++];
            while (start2 < end2)
                b[k++] = a[start2++];
        }
        T *temp = a;
        a = b;
        b = temp;
    }
    if (a != arr) {
        for (int i = 0; i < len; i++)
            b[i] = a[i];
        b = a;
    }
    delete[] b;
}
遞歸版：
void Merge(vector<int> &Array, int front, int mid, int end) {
    // preconditions:
    // Array[front...mid] is sorted
    // Array[mid+1 ... end] is sorted
    // Copy Array[front ... mid] to LeftSubArray
    // Copy Array[mid+1 ... end] to RightSubArray
    vector<int> LeftSubArray(Array.begin() + front, Array.begin() + mid + 1);
    vector<int> RightSubArray(Array.begin() + mid + 1, Array.begin() + end + 1);
    int idxLeft = 0, idxRight = 0;
    LeftSubArray.insert(LeftSubArray.end(), numeric_limits<int>::max());
    RightSubArray.insert(RightSubArray.end(), numeric_limits<int>::max());
    // Pick min of LeftSubArray[idxLeft] and RightSubArray[idxRight], and put into Array[i]
    for (int i = front; i <= end; i++) {
        if (LeftSubArray[idxLeft] < RightSubArray[idxRight]) {
            Array[i] = LeftSubArray[idxLeft];
            idxLeft++;
        } else {
            Array[i] = RightSubArray[idxRight];
            idxRight++;
        }
    }
}

void MergeSort(vector<int> &Array, int front, int end) {
    if (front >= end)
        return;
    int mid = front + (end - front) / 2;
    MergeSort(Array, front, mid);
    MergeSort(Array, mid + 1, end);
    Merge(Array, front, mid, end);
}
實作範例 > C#

public static List<int> sort(List<int> lst) {
    if (lst.Count <= 1)
        return lst;
    int mid = lst.Count / 2;
    List<int> left = new List<int>();  // 定义左侧List
    List<int> right = new List<int>(); // 定义右侧List
    // 以下兩個循環把 lst 分為左右兩個 List
    for (int i = 0; i < mid; i++)
        left.Add(lst[i]);
    for (int j = mid; j < lst.Count; j++)
        right.Add(lst[j]);
    left = sort(left);
    right = sort(right);
    return merge(left, right);
}
/// <summary>
/// 合併兩個已經排好序的List
/// </summary>
/// <param name="left">左側List</param>
/// <param name="right">右側List</param>
/// <returns></returns>
static List<int> merge(List<int> left, List<int> right) {
    List<int> temp = new List<int>();
    while (left.Count > 0 && right.Count > 0) {
        if (left[0] <= right[0]) {
            temp.Add(left[0]);
            left.RemoveAt(0);
        } else {
            temp.Add(right[0]);
            right.RemoveAt(0);
        }
    }
    if (left.Count > 0) {
        for (int i = 0; i < left.Count; i++)
            temp.Add(left[i]);
    }
    if (right.Count > 0) {
        for (int i = 0; i < right.Count; i++)
            temp.Add(right[i]);
    }
    return temp;
}
實作範例 > Ruby

def merge list
  return list if list.size < 2

  pivot = list.size / 2

  # Merge
  lambda { |left, right|
    final = []
    until left.empty? or right.empty?
      final << if left.first < right.first; left.shift else right.shift end
    end
    final + left + right
  }.call merge(list[0...pivot]), merge(list[pivot..-1])
end
實作範例 > Java

遞歸版：
static void merge_sort_recursive(int[] arr, int[] result, int start, int end) {
	if (start >= end)
		return;
	int len = end - start, mid = (len >> 1) + start;
	int start1 = start, end1 = mid;
	int start2 = mid + 1, end2 = end;
	merge_sort_recursive(arr, result, start1, end1);
	merge_sort_recursive(arr, result, start2, end2);
	int k = start;
	while (start1 <= end1 && start2 <= end2)
		result[k++] = arr[start1] < arr[start2] ? arr[start1++] : arr[start2++];
	while (start1 <= end1)
		result[k++] = arr[start1++];
	while (start2 <= end2)
		result[k++] = arr[start2++];
	for (k = start; k <= end; k++)
		arr[k] = result[k];
}
public static void merge_sort(int[] arr) {
	int len = arr.length;
	int[] result = new int[len];
	merge_sort_recursive(arr, result, 0, len - 1);
}
迭代版：
public static void merge_sort(int[] arr) {
	int[] orderedArr = new int[arr.length];
	for (int i = 2; i < arr.length * 2; i *= 2) {
		for (int j = 0; j < (arr.length + i - 1) / i; j++) {
			int left = i * j;
			int mid = left + i / 2 >= arr.length ? (arr.length - 1) : (left + i / 2);
			int right = i * (j + 1) - 1 >= arr.length ? (arr.length - 1) : (i * (j + 1) - 1);
			int start = left, l = left, m = mid;
			while (l < mid && m <= right) {
				if (arr[l] < arr[m]) {
					orderedArr[start++] = arr[l++];
				} else {
					orderedArr[start++] = arr[m++];
				}
			}
			while (l < mid)
				orderedArr[start++] = arr[l++];
			while (m <= right)
				orderedArr[start++] = arr[m++];
			System.arraycopy(orderedArr, left, arr, left, right - left + 1);
		}
	}
}
實作範例 > PHP

function merge_sort($arr) {
	$len = count($arr);
	if ($len <= 1)
		return $arr;
	$half = ($len>>1) + ($len & 1);
	$arr2d = array_chunk($arr, $half);
	$left = merge_sort($arr2d[0]);
	$right = merge_sort($arr2d[1]);
	while (count($left) && count($right))
		if ($left[0] < $right[0])
			$reg[] = array_shift($left);
		else
			$reg[] = array_shift($right);
	return array_merge($reg, $left, $right);
}

$arr = array(21, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70);
$arr = merge_sort($arr);
for ($i = 0; $i < count($arr); $i++) {
	echo $arr[$i] . ' ';
}
實作範例 > Python3

def mergeSort(nums):
    if len(nums) < 2:
        return nums
    mid = len(nums) // 2
    left = mergeSort(nums[:mid])
    right = mergeSort(nums[mid:])

    i = j = 0
    result = []
    while i < len(left) and j < len(right):
        if left[i] < right[j]: 
            result.append(left[i])
            i += 1
        else: 
            result.append(right[j])
            j += 1

    while i < len(left): 
        result.append(left[i]) 
        i += 1

    while j < len(right): 
        result.append(right[j]) 
        j += 1

    return result


if __name__ == "__main__":
    nums = [1, 4, 2, 3.6, -1, 0, 25, -34, 8, 9, 1, 0]
    print("original:", nums)
    print("Sorted:", mergeSort(nums))
實作範例 > Erlang

%% @doc 归并排序
g_sort([]) ->
    [];
g_sort([T]) ->
    [T];
g_sort(L) ->
    g_sort(L, length(L)).

g_sort([_, _ | _] = L, Length) ->
    SplitNum = trunc(Length / 2),
    {L1, L2} = lists:split(SplitNum, L),
    g_merge(g_sort(L1, SplitNum), g_sort(L2, Length - SplitNum));
g_sort(L, _Length) ->
    L.

%% 已经排好序的两个list合并
g_merge([], L2) ->
    L2;
g_merge(L1, []) ->
    L1;
g_merge([T1 | Rest1] = L1, [T2 | Rest2] = L2) ->
    if
        T1 =< T2 -> [T1 | g_merge(Rest1, L2)];
        true -> [T2 | g_merge(L1, Rest2)]
    end.
實作範例 > Javascript

递归法
function merge(left, right){
  var result = [];
  while(left.length > 0 && right.length > 0){
    if(left[0] < right[0]){
      result.push(left.shift());
    }else{
      result.push(right.shift());
    }
  }
  return result.concat(left, right);
}

function mergeSort(arr){
  if(arr.length <=1) return arr;
  var middle = Math.floor(arr.length / 2);
  var left = arr.slice(0, middle);
  var right = arr.slice(middle);
  return merge(mergeSort(left), mergeSort(right));
}
迭代法
實作範例 > Go

package main

import (
	"fmt"
	"sort"
)

func MergeSort(list []int) []int {
	var length = len(list)
	if length < 2 {
		return list
	}
	var mid = length / 2
	return merge(MergeSort(list[:mid]), MergeSort(list[mid:]))
}

func merge(x, y []int) []int {
	var r []int = make([]int, len(x)+len(y))
	for i, j := 0, 0; ; {
		if i < len(x) && (j == len(y) || x[i] < y[j]) {
			r[i+j] = x[i]
			i++
		} else if j < len(y) {
			r[i+j] = y[j]
			j++
		} else {
			break
		}
	}
	return r
}

func main() {
	var list []int = []int{56, 48, 58, 94, 87, 4, 5, 61, 5, 8, 74, 9, 84, 15, 94, 9, 4, 31, 41, 68, 7, 4, 6, 94, 16, 9, 8, 4}
	fmt.Println(MergeSort(list))
	fmt.Println(list)

	sort.Ints(list)
	fmt.Println(list)
}
递归版
package main

import (
	"fmt"
)

func merge(data []int) []int {
	sum := len(data)
	if sum <= 1 {
		return data
	}
	left := data[0 : sum/2]
	lSize := len(left)
	if lSize >= 2 {
		left = merge(left)
	}
	right := data[sum/2:]
	rSize := len(right)
	if rSize >= 2 {
		right = merge(right)
	}
	j := 0
	t := 0
	arr := make([]int, sum)
	fmt.Println(left, right, data)
	for i := 0; i < sum; i++ {
		if j < lSize && t < rSize {
			if left[j] <= right[t] {
				arr[i] = left[j]
				j++
			} else {
				arr[i] = right[t]
				t++
			}	
		}  else if j >= lSize{
			arr[i] = right[t]
			t++
		}  else if t >= rSize{
			arr[i] = left[j]
			j++
		}
	}
	return arr
}

func main() {
	var aa = []int{1000, 2, 31, 34, 5, 9, 7, 4, 6, 89, 90, 99, 99, 99, 99, 99}
	
	var bb = merge(aa)
	fmt.Println(bb)
}
算法复杂度

比较操作的次数介于 (n\log n)/2和 n\log n-n+1。
赋值操作的次数是 (2n\log n)。归并算法的空间复杂度为： \Theta (n)
外部連結

Dictionary of Algorithms and Data Structures: Merge sort （页面存档备份，存于）
Merge sort Algorithm with example program （页面存档备份，存于）
Merge Sort Algorithm Simulation
Mergesort For Linked Lists （页面存档备份，存于）
Mergesort in Java, Python, Perl, C, Ruby
大都会交通局

大都会交通局或大都会运输署是负责大型城市综合交通的组织机构[來源請求]。不同地区的相关机构包括：
加拿大
蒙特利尔大都会交通局
美国
纽约大都会运输署
波士顿马萨诸塞湾交通局
哈里斯縣大都會運輸管理局
邁阿密-戴德運輸
洛杉矶县都会运输局
墨尔本大都会交通局（英语：）
切爾訥泰什蒂鄉 (多爾日縣)

44°27′N 23°26′E﻿ / ﻿44.450°N 23.433°E﻿ / 44.450; 23.433
切爾訥泰什蒂鄉（羅馬尼亞語：），是羅馬尼亞的鄉份，位於該國西南部，由多爾日縣負責管轄，面積57平方公里，海拔高度157米，2007年人口2,031，人口密度每平方公里35人。
參考資料

（罗马尼亚文） Populaţia stabilă după etnie  - judeţe, municipii, oraşe, comune（页面存档备份，存于）, National Institute of Statistics; accessed October 24, 2013
广岛农业短期大学

| 广岛农业短期大学 |
| --- | --- |
 
其他名字: 广农短
创办时间: 1954年 1954年（正式设置大学）
JIS代码（日语：）: 4040
校址: 广岛县东广岛市西条町大字御薗宇8511-1
校區:  日本 广岛县东广岛市
教学机构:  学部： 农学科 畜产学科 
隶属: 广岛县
網站: http://www.pu-hiroshima.ac.jp/soshiki/47/history.html
大學主题
广岛农业短期大学（日语：／ Hiroshima Nōgyō Tanki Daigaku *），简称广农短，是过去一所位于日本广岛县东广岛市的公立短期大学。
概要 > 简介

短期大学为于1954年开办、由广岛县经营。招生到1988年、停办于1990年。为男女同校从开办。
概要 > 历史

1950年 广岛农业短期大学成立并同时设置一个学科即农业科。
1967年 畜产科成立。
1968年 学校的校址搬迁。
1969年 两个学科改名为、以下列举。
农业科→农学科
畜产科→畜产学科
1988年 招生最后、次年停止招生（正式停办于1990年3月31日）。
学校环境

校区：在了广岛县东广岛市
历任校长

山根甚信：第一代短期大学校长。
高桥利男：最后短期大学校长。
组织 > 学科

农学科
畜产学科
相关链接

日本短期大学列表
广岛女子短期大学
广岛县立保健福祉短期大学
參考资料

1 2  请参看『』(1980年)184-185页「」的项目（日語）
↑  广岛农业短期大学的历史 （页面存档备份，存于）（日語）2014年4月13日阅览。
1 2 3 4  请参看2011年度『全国短期大学高等専門学校一覧（日语：）』253页「」的项目（日語）
↑  请参看1954年度『日本短期大学一览（日语：）』7页（1954年、于1954年5月1日）（日語）
↑  请参看1990年度『全国学校総覧（日语：）』51页（1989年、于1989年5月1日）（日語）
廚具

廚具又稱廚房用具，是指用于准备食物或供应食物的用具、电器、餐具和炊具。厨房用具也可以用来在烹饪之前或之后保存或储存食物。
安格馬巫王

安格馬巫王（Witch-king of Angmar），是英國作家約翰·羅納德·瑞爾·托爾金（J.R.R. Tolkien）的史詩式奇幻小說《魔戒》三部曲中的虛構人物。
他是索倫麾下最強而有力的部屬，是九戒靈之首。他消滅了亞爾諾（Arnor），並斷絕了剛鐸（Gondor）最後的王室血脈。最終在帕蘭諾平原戰役（Battle of Pelennor Field）裡，巫王被洛汗王女伊歐玟（Éowyn）消滅。
姓名與稱號

原著從未提及過他的真實姓名，只給予了許多他的稱號。
「安格馬巫王」（Witch-king of Angmar）是他最有名的稱號之一，另外也稱為「黑首領」（Black Captain）、「戒靈之首」（Lord of the Nazgûl）、「魔窟之王」（Lord of Morgul）、Dwimmerlaik等。最後一個稱號是洛汗語，是伊歐玟與巫王對峙時，她那樣稱呼他。這名字有一部份取自古英語"Dwimor"，有著「怨靈」的意思。這些稱號都與他的戒靈身份和統治地方有關連。
一些以中土大陸為主題的角色扮演遊戲及卡片遊戲把安格馬巫王命名為阿摩拉索爾（Er-Murazor），並為其他戒靈命名。然而這些名字只是由遊戲公司捏造出來。在《未完成的故事》裡，只有戒靈的副官、多爾哥多的統領被命名為克哈穆爾（Khamûl）。
總覽

巫王原是人類（Men），但他所屬族群卻不明。後來他接受了九戒，墮落成為索倫的奴僕戒靈（Nazgûl）。戒靈當中有三位是努曼諾爾人（Númenóreans）的貴族，故可推斷較一般人類強的努曼諾爾人會成為戒靈之首。加上托爾金的筆記裡，他說沒有有關安格馬巫王姓名和背景的資料，但他認為巫王可能有努曼諾爾血統。有書迷猜測巫王是皇室成員，是塔爾-明那斯特（Tar-Minastir）的父親伊西莫（Isilmo）。
巫王很可能擅長於使用黑魔法，故此為他帶來了「巫王」的稱號。他的力量也因為有九戒的幫助而增強，但九戒也使他陷於凡世與死亡的世界之中，變成不得解脫的怨靈，永遠受到索倫（Sauron）的指揮。他也是九戒靈之中最強的一位，統領他們，是索倫部下最可怖和最強力的一位。巫王作為戒靈的活躍時間大概有4,200年以上，至第三紀元3019年3月15日才被伊歐玟消滅。
他在第三紀元中前期建立了安格馬（Angmar）王國，中後期侵佔了米那斯伊希爾，將那裡墮落成邪惡之城、魔多（Mordor）的前哨。他對登丹人王國都造成沉重打擊，摧毀亞爾諾、斷絕剛鐸的王室血脈，並在魔戒聖戰（War of the Ring）時率軍進攻剛鐸，意圖永遠消滅他們。
精靈葛羅芬戴爾（Glorfindel）曾對巫王的命運下過預言，說沒有任何英雄好漢（Men）可以消滅他。最終他在帕蘭諾平原上被哈比人梅里雅達克·烈酒鹿（Meriadoc Brandybuck）與人類女子伊歐玟聯手殺死，應驗了這個預言，因為"Men"有著雙關意思，既可解作人類，亦可解作男人。
生平 > 接受九戒

約在第二紀元中期時，安格馬巫王出生，但不清楚他的出生地點、族裔和時間的資料。
1697年，索倫攻佔伊瑞詹（Eregion），掠奪九戒，轉贈予人類，讓他們成為了當時最偉大的王者、魔法師與戰士。但慢慢不論九戒持有者接受戒指的原意是行善或行惡，力量之戒最終把他們腐化，讓他們淪為不死的戒靈，落入凡世與死亡之間而不得解放，永遠受索倫的奴役。
第二紀元2251年，戒靈首次出現在中土大陸。在其後的年月裡，巫王為索倫效力，成為他旗下的指揮官，甚至可能在索倫前去墮落努曼諾爾帝國（Númenor）時代表他統領邪惡。在最後聯盟戰役（War of the Last Alliance）期間，巫王應該也有參戰，索倫推翻後戒靈逃遁無蹤。第三紀元約1000年，索倫捲土重來，以多爾哥多（Dol Guldur）為巢穴，戒靈再次活躍。
生平 > 安格馬巫王

第三紀元約1300年，戒靈之首出現在安格馬山脈（Mountains of Angmar），建立統治並對北方登丹人宣戰。因為他懂得使用黑魔法，安格馬巫王之名遂廣為人知。短短109年裡，巫王先後毀滅卡多蘭（Cardolan）及魯道爾（Rhudaur），並與繼續保有登丹人王室血脈的雅西頓（Arthedain）進行曠日持久的數百年戰事。第三紀元1636年，古墓崗（Barrow-downs）的卡多蘭登丹人被大瘟疫滅絕了，巫王派遣屍妖（Barrow-wights）進駐該地，阻止登丹人對當地的重新殖民。
1973年，巫王準備發動總攻擊，雅西頓最後國王亞帆都（Arvedui）請求剛鐸支援。剛鐸國王埃阿尼爾二世（Eärnil II）知道情勢危急，命兒子爾諾統領遠征軍北進。可是援軍來得太遲，巫王攻克雅西頓的首都佛諾斯特伊蘭（Fornost Erain），完成他在北方的使命：摧毀亞爾諾。巫王繼續佔據佛諾斯特，但志得意滿的他以為可以像征服雅西頓一樣，將爾諾的部隊趕落隆恩河（Lhûn），結果沒有依賴堅固的城市，更放任邪惡毀壞雅西頓。
爾諾（Eärnur）卻非庸碌之徒，他盡量集結兵力，收編雅西頓的殘軍，又獲得林頓（Lindon）與瑞文戴爾精靈支援，於是先發制人主動開戰。他的騎兵從北方直擊敵兵側線，在伊凡丁湖（Lake Evendim）至北崗（North Downs）的戰線更是大獲全勝。巫王一敗塗地，想躲進山脈中的根據地恢復實力。可是爾諾不肯放過他，親率騎士追殺上來，葛羅芬戴爾也統領瑞文戴爾（Rivendell）的精靈增援，至此安格馬大軍幾乎被斬殺殆盡。
巫王在絕境之中親自出戰，所有剛鐸戰士都恐懼得無法作戰。爾諾想上前交鋒，但他的馬匹因為太懼怕而逃走，巫王嘲笑爾諾的膽怯無能，自此二人結下仇怨。巫王欲藉此反撲，葛羅芬戴爾現身將他逼退，他逃去無蹤，安格馬自此滅亡。稍後葛羅芬戴爾阻止了爾諾的復仇，並對巫王的剋星下達了預言。
生平 > 米那斯魔窟之主

第三紀元1980年，安格馬巫王返回魔多，重新集結邪惡力量。二十年後，巫王率領戒靈圍攻米那斯伊希爾（Minas Ithil），花了兩年攻下那裡，把她墮落成為恐懼與邪惡的城市，用作戒靈的巢穴。
第三紀元2043年，剛鐸國王埃阿尼爾二世去世，爾諾繼位。安格馬巫王向他提出單挑，但在宰相馬迪爾·佛龍威（Mardil Voronwë）的勸喻下他拒絕。七年後，安格馬巫王再次挑釁爾諾，他帶著一小隊騎兵向米那斯魔窟直去，自此一去不返。剛鐸人們認為巫王從沒想過公平戰鬥，只為抓住爾諾，將他折磨至死。至此，剛鐸攝政王（Stewards of Gondor）的統治自此開始。
米那斯伊希爾陷落後，奧斯吉力亞斯（Osgiliath）遂成為安格馬巫王的新一個目標。2475年，巫王率兵攻佔奧斯吉力亞斯，破壞連接安都因河（Anduin）東西岸的大橋。當時攝政王迪耐瑟一世（Denethor I）之子波羅莫（Boromir）勇猛無比，連巫王也怕他，他領導剛鐸人打勝仗。可是他在這戰裡受到魔窟劍（Morgul-blade）所傷，縮短了他的壽命。經此一役後，巫王潛伏在戒靈之城裡面數百年，為主人準備好魔多的一切，等待索倫公開重生，再度向中土自由之民宣戰。
生平 > 追擊魔戒持有者

3018年6月，巫王再度現世，領兵攻過安都因河，奪取魔戒。黑騎士先向北會合多爾哥多的戒靈，在安都因河谷附近搜索夏爾（Shire）一地。毫無收獲的戒靈朝艾辛格（Isengard）前進，欲獲取薩魯曼的情報。薩魯曼心懷鬼胎，謊稱只有甘道夫（Gandalf）才清楚夏爾的位置（另一版本表示，薩魯曼向戒靈供出所有他知道的情報）。戒靈離開艾辛格，半路上俘獲了葛力馬·巧言（Gríma Wormtongue），逼問出所有的情報。
巫王及其餘八戒靈北進，抓住了薩魯曼一位間諜，獲取夏爾的地圖與巴金斯家族的位置，並繼續前進。9月下旬他們驅逐了守衛薩恩渡口（Sarn Ford）的遊俠，攻入夏爾境內。四或五位戒靈進入夏爾，其餘留守綠蔭路，巫王則親自前去古墓崗喚醒屍妖，命令牠們攔截任何路經的旅人。戒靈突襲雄鹿地（Buckland），但找不到至尊魔戒，追到布理（Bree）的戒靈也在躍馬旅店的偷襲裡失手了。
出擊的戒靈向停駐布理以南的巫王匯報成果，巫王判斷魔戒持有者（Ring Bearer）一行人會向東進發，於是命令四名戒靈搶先控制風雲頂（Weathertop），而他親自帶領剩餘戒靈搜索綠蔭路（Greenway）。巫王的搜尋無果，他們於是穿越布理去追擊佛羅多。甘道夫跟蹤著戒靈，戒靈巧妙地將他撇開，故此甘道夫先進駐風雲頂。眾戒靈於晚間突襲，甘道夫敗走，引走四名戒靈。兩天後，佛羅多一行人進入風雲頂，巫王等人攻擊他們。佛羅多戴上戒指，叫喊「伊爾碧綠絲」（Elbereth）之名擊退敵人，但期間被巫王以魔窟劍刺傷。
魔窟劍的碎片留在佛羅多體內，並試圖向他的心臟前進，以便永遠控制佛羅多的思想。亞拉岡（Aragorn）持劍與火把擊退敵人，帶著他們趕向瑞文戴爾。巫王等人撤退後，他因為太多顧慮要思及而不慎讓佛羅多一行人逃離他們的監視，並失掉了對方的蹤跡。他帶著戒靈們沿東大道（Great East Road）進發，直撲米塞塞爾橋（Last Bridge）。葛羅芬戴爾此時離開瑞文戴爾，驅逐橋上的戒靈，巫王等人不敵於葛羅芬戴爾，於是向南撤退。
10月20日，九戒靈於布魯南渡口（Ford of Bruinen）追擊魔戒持有者。葛羅芬戴爾的座騎接載佛羅多渡河，巫王涉水追擊他們，眾戒靈被愛隆（Elrond）召喚的洪水所淹沒。眾戒靈失去座騎，遂秘密折返魔多。索倫把墮落妖獸（Fell Beasts）賜給戒靈，作為他們的新座騎。
生平 > 進軍剛鐸及毀滅

巫王回到米那斯魔窟備戰，將對米那斯提力斯（Minas Tirith）發動致命一擊。3019年3月10日，巫王統領大軍離開米那斯魔窟，向剛鐸進軍。兩日後，巫王的大軍打敗法拉墨（Faramir），攻克了大河的渡口，並突破拉馬斯安澈（Rammas Echor）的防禦，對該城進行圍城戰。
在剛鐸人心陷於絕望與恐懼之際，巫王下令攻擊。整體城牆中防禦力最弱的城門發生激烈的爭奪戰，巫王親臨前線，整個戰場上彌漫著恐怖的氣息，所有人都停止戰鬥。他唸誦古老的咒語，葛龍得（Grond）攻城鎚擊破米那斯提力斯的大門。他進入了從沒有敵人踏足過的白城裡，所有戰士在他面前都潰逃了，只有甘道夫與影疾屹立在他的面前。巫王嘲諷甘道夫將白費氣力，他在此刻擁有絕對的優勢。
巫王宣告他的時刻來到時，日光驅逐了黑暗，而六千名洛汗（Rohan）騎士也抵達了帕蘭諾平原。巫王沒有被這情況嚇倒，他離開了城門，騎上墮落妖獸發動致命攻擊。洛汗騎兵輕易殺敗大量敵人，更在與哈拉德林人（Haradrim）的遭遇戰裡取得勝利。在洛汗人取勝一剎那，巫王朝鬆懈的敵人發動攻擊，希優頓（Théoden）的座騎雪鬃中箭倒地，國王身受重傷。
巫王降落在戰場上，希優頓的衛士德海姆（Dernhelm）依舊捍衛著希優頓王，命令戒靈之王離開，讓逝者安息。巫王嘲笑他不自量力想抵抗，說任何英雄好漢都無法殺掉他。德海姆此時揭露他的真面目，他是洛汗王女伊歐玟所偽裝的。巫王深感疑慮，他的墮落妖獸朝伊歐玟攻擊，被她一擊斬殺。巫王遂親自與她戰鬥，擊碎了她的盾牌，準備將她扼死。
哈比人梅里雅達克從後攻擊巫王，以登丹人（Dúnedain）的魔法寶劍刺入他的膝蓋，造成傷害。伊歐玟此刻用盡全力站起，將她的劍刺進巫王的皇冠與斗篷的中間。巫王在一聲尖厲的慘號中毀滅，應驗了當初葛羅芬戴爾對巫王剋星所下的預言。
坐騎

巫王以黑騎士模樣出現時，總是騎乘著黑馬。
而飛獸（Fell Beast），或譯墮落妖獸，則為索倫賜與他與其他戒靈用於在空中飛行的坐騎。這種生物會發出惡臭，身上沒有羽毛。帕蘭諾平原戰役期間，巫王即乘著墮落妖獸攻擊希優頓王，但墮落妖獸隨即被伊歐玟所殺死。
魔戒電影裡的墮落妖獸常會發出叫聲，在剛鐸攻城戰時還會破壞米那斯提力斯的投石器。電影設計師丹尼爾·法爾科納表示：他設計電影裡墮落妖獸的靈感是源自於禿鷹、長頸鹿及其他吃腐肉的鳥類。
改編描述

彼得·傑克遜（Peter Jackson）執導的《魔戒電影三部曲》系列（The Lord of the Rings film trilogy）中，首部《魔戒現身》的風雲頂場景裡安格馬巫王的演員是肖恩·蘭吉（Shane Rangi）。但在《魔戒三部曲：王者再臨》裡巫王則改由劳伦斯·马克奥雷飾演，安迪·瑟金斯配音。
電影裡巫王和戒靈的行為與小說裡所述的部分有所差異：
他們親自襲擊布理的躍馬旅店，並摧毀哈比人的房間；小說裡，這事由在布理的同黨所幹。
在電影的加長版本，他們與亞拉岡在風雲頂撕鬥，在前方的一些戒靈被火焰燃燒。在小說裡，亞拉岡以燃燒的木棒迎戰，因為他的佩劍已斷裂，只是一名戒靈被燃點，他們很快就撤退。過了布魯南渡口，戒靈對上了亞玟，安格馬巫王對亞玟說：「放棄那半身人吧，女精靈！」，後來亞玟唸咒招喚洪水淹沒戒靈。在小說裡，亞玟並沒有在此出現，洪水是由愛隆引發的。
在《魔戒三部曲：王者再臨》裡，安格馬巫王的行為與小說裡所述的不同。
首先，他在米那斯魔窟騎上墮落妖獸替了騎在黑馬上。不同於小說，他感應不到至尊魔戒，但佛羅多感應到當初風雲頂巫王對他的刺殺，他喊到：「我感受到他那劍刃！」
後來，安格馬巫王命令半獸人副官葛斯摩（Gothmog）：「將所有部隊推進，不斷攻擊直至城市淪陷，殺個片甲不留！」當葛斯摩提及甘道夫時，安格馬巫王答道：「我會打敗他。」
安格馬巫王騎乘墮落怪物，從空中襲擊守軍及破壞投石器。而在小說裡，直至城門被毀之前，安格馬巫王也沒有在前方衝鋒陷陣。在電影裡，從攻城塔湧出的半獸人率先踏上米那斯提力斯的土地，而食人妖則是率先攻入城內。
甘道夫在城上騎著影疾奔馳，卻遇上了安格馬巫王，兩人以意志力決鬥，安格馬巫王稍勝，甘道夫的手杖被擊碎，然而，他們的戰鬥被洛汗援軍抵達的場景打斷。此場景僅在加長版裡放映。
在帕蘭諾平原戰役，安格馬巫王以一口劍及流星鎚（代替釘頭鎚）攻擊伊歐玟。
《魔戒》電影裡安格馬巫王的頭盔原本設計得更像約翰·何奧插圖的版本。原本那盔甲可見於電子藝界的《魔戒》遊戲系列。不過，這對於沒有看到原著的觀眾來說會造成混淆，他們不知道在戰場上的那個是索倫還是安格馬巫王，製片人修訂了這個設計，使它更像黑騎士的裝扮。
此外，在傑克遜執導的魔戒前傳《哈比人電影系列》（The Hobbit film trilogy）裡，安格馬巫王於索倫棲身多爾哥多期間受到招喚，從魯道爾荒陵破棺而出，亦隱匿在多爾哥多的雕像之中；還襲擊了進入探查的褐袍巫師瑞達加斯特，但為對方所擊敗，落下魔窟劍。在聖白議會攻擊多爾哥多期間，巫王率眾戒靈和薩魯曼、愛隆搏鬥，最終被凱蘭崔爾驅離。但在原著小說裡，聖白議會攻擊多爾哥多期間巫王及戒靈是居住在米那斯魔窟中的。在《哈比人：五軍之戰》中的巫王造型是由維塔工作室的安德魯（Andrew）所設計的，與該系列其他電影出現的巫王造型略有差異。
註釋

↑  此猜測應該有誤，努曼諾爾繼承法規定若統治者沒有子女，血緣上最接近統治者的男性後裔將會繼位（詳見《未完成的故事》"Aldarion and Erendis"）。伊西莫的姐姐塔爾-泰爾匹瑞安（Tar-Telperiën）沒有子女，並傳位予伊西莫之子、也是她的侄子塔爾-明那斯特。若伊西莫接受了戒指，他的生命會被強行延長，活得比他的姐姐長，故此應該會由他繼位，而非他的兒子。
↑  《魔戒三部曲》的附錄二裡指明，有四位戒靈進入夏爾。而《魔戒三部曲：閱者伴讀》裡較詳細的版本則表示，五位戒靈（當中包括副官克哈穆爾）進入了夏爾。
資料來源

↑  .   [2007-10-03]. （原始内容存档于2007-09-28）.
↑  《精靈寶鑽》 2002年 聯經初版翻譯 《努曼諾爾淪亡史》
↑  《魔戒三部曲：閱者伴讀》 P.20 "Nomenclature of The Lord of the Rings"：「the name and origin of the Witch-king is not recorded, but he was probably ... of Numenorean descent.」
1 2 3 4 5 6 7 8 9 10 11 12  《魔戒三部曲》 2001年 聯經初版翻譯 附錄二編年史
1 2 3  《魔戒三部曲》 2001年 聯經初版翻譯 附錄一帝王本紀及年表
1 2  《精靈寶鑽》 2002年 聯經初版翻譯 《魔戒及第三紀元》
1 2 3 4  《未完成的故事》 1998年 HarperCollins出版 "The Hunt for the Ring"
1 2  《魔戒三部曲：王者再臨》 2001年 聯經初版翻譯 第五章第四節《剛鐸攻城戰》
↑  《魔戒三部曲：王者再臨》 2001年 聯經初版翻譯 第五章第六節《血戰帕蘭諾》
↑  蓋瑞‧魯索. . 臺北: 奇幻基地. 2004年2月. ISBN 986-7576-16-0.
↑  . 中國網. 2015-01-30  [2018-01-15]. （原始内容存档于2018-06-12）.
↑  . 新浪網. 2011-12-17  [2018-01-15]. （原始内容存档于2018-01-15）.
↑  哈比人：五軍之戰五碟裝導演加長版DVD - 第五碟 旅程的終點
《精靈寶鑽》
《魔戒及第三紀元》
《魔戒三部曲》及其附錄
《魔戒三部曲：閱者伴讀》（The Lord of the Rings: A Reader's Companion）
《未完成的故事》 托爾金著 HarperCollins Publishers Ltd New Ed edition 1998年 ISBN 0-261-10362-8
外部連結

安格馬巫王 （页面存档备份，存于）在托爾金門戶上的條目（英文）
安格馬巫王 中土百科全書
米那斯魔窟的旗號。
書迷對卡恩督（Carn Dûm，安格馬王國的首都）與巫王的描繪。
刺傷佛羅多與波羅莫的魔窟劍。
電影《魔戒三部曲：王者再臨》全球首映時，一尊墮落妖獸的塑像。
魔戒電影中的巫王造型
宝兴鹛雀

| 宝兴鹛雀 |
| --- | --- |

保护状况
 无危（IUCN 3.1）
科学分类 
界：: 动物界 Animalia
门：: 脊索动物门 Chordata
纲：: 鸟纲 Aves
目：: 雀形目 Passeriformes
科：:  Paradoxornithidae
属：: 宝兴鹛雀属 Moupinia David & Oustalet, 1877
种：: 宝兴鹛雀 M. poecilotis
二名法
Moupinia poecilotis (Verreaux, 1871)

宝兴鹛雀（学名：），又名寶興雀鶥、褐尾鹛雀，俗稱石畫眉，为鸦雀科宝兴鹛雀属的鸟类，是中国的特有物种。分布于四川、云南等地，多栖息于针阔混交林或针叶林中。该物种的模式产地在四川宝兴。
宝兴蹄盖蕨

| 宝兴蹄盖蕨 |
| --- | --- |

科学分类 
界：: 植物界 Plantae
演化支：:  Tracheophyta
纲：: 真蕨綱 Polypodiopsida
目：: 水龍骨目 Polypodiales
科：: 蹄盖蕨科 Athyriaceae
属：: 蹄盖蕨属 Athyrium
种：: 宝兴蹄盖蕨 A. baoxingense
二名法
Athyrium baoxingense Ching

宝兴蹄盖蕨（学名：）为蹄盖蕨科蹄盖蕨属下的一个种。
扩展阅读

維基物種上的相關：宝兴蹄盖蕨
奧馬斯區

12°30′53″S 76°17′21″W﻿ / ﻿12.51472°S 76.28917°W﻿ / -12.51472; -76.28917

奧馬斯區（西班牙語：），是秘魯的一個區，位於該國中南部利馬大區的堯約斯省，始建於1821年7月28日，面積295.4平方公里，海拔高度1,539米，2005年人口686，人口密度每平方公里2.3人。
參考資料

（西班牙文） Instituto Nacional de Estadística e Informática. Banco de Información Distrital. Retrieved April 11, 2008.
奮鬥

奋斗可以指：
奮鬥 (1978年電視劇)，香港無綫電視(TVB)1978年長篇電視劇集，監製李添勝。同名主題曲由顧嘉煇作曲、黃霑填詞、甄妮主唱。
奋斗 (2007年电视剧)，中國大陸2007年播出的一部电视剧，導演趙寶剛。
奮鬥 (1988年電影)，台灣電影公司1988年，由台灣省電影製片廠改制為公司後首部作品，前名「上壘」。劉益東導演，楊慶煌、尉庭歡、洗煥貞、吳柄南等主演，旅日棒球明星郭源治特別客串。
奋斗 (2011年电影)，导演马伟豪，李晨、董璇、郑恺、李媛、王东方、胡睿、沈芳熙、張國柱等主演。
奮鬥月刊，青年日報發行的中華民國國軍軍中月刊。
相關條目

名稱以「」開頭的所有条目
名稱以「」開頭的所有条目
利瓦湖

56°09′28″N 28°58′41″E﻿ / ﻿56.15778°N 28.97806°E﻿ / 56.15778; 28.97806
利瓦湖（俄语：），是俄羅斯的湖泊，位於該國西北部，由普斯科夫州負責管轄，處於謝別日區，面積5.3平方公里，集水區面積27平方公里，平均水深2米，最大水深3.2米。
參考資料

Фонд водоёмов Псковской области (Excell)
思鄉病

思鄉病或鄉愁指的是「一個人並非身處故鄉並期望返回故鄉，而感覺到的壓力、憂慮或恐懼」。
醫學中鄉愁的症狀

在醫學上，鄉愁的情緒可能產生一些生理或心理症狀，可能但不限於：胸腔緊迫、喉嚨緊迫、胸口疼痛，而且可能引發絕望。首先將這些生理或心理症狀看作是精神疾病的人是瑞士醫生讓·雅各·哈德（Jean-Jacques Harder，1656-1711），他在1678年以希臘文詞根（νόστος = nostos = one's homeland = 家鄉, άλγος = algos = pain/longing = 痛苦/憧憬）創造出nostalgia這個新詞。另一種說法是由約翰尼斯·霍費爾（Johannes Hofer，1669-1752）在1688年創造的。（後來這個新詞太過於成功地流布，以致於人們忘了它的來源。當這個詞彙進入日常生活用語之後，它的原始意義－指一種疾病－已經丟失。）
從17世紀後期到19世紀後期，醫生會診斷並治療鄉愁。這個詞彙在其它的語言裡分別為：maladie du pays （country sickness，鄉間-疾病，法語），Heimweh（home-pain，家鄉-痛，德語）和el mal de corazón（heart-pain，心-痛，西班牙語）。
致死的案例時有耳聞，士兵有時藉由解除職務並送返家鄉來成功治癒。1978年，羅伯特·漢米爾頓（Robert Hamilton，1749-1830）報導了一個罹患鄉愁的士兵的案例。
思鄉病的症狀有的時候像流行病一樣。在軍隊中，當打勝仗時思家病比較不常見，相反地，戰況吃緊時則是比較常見的。史载楚汉战争中，项羽及其軍隊被困于垓下，漢軍士兵唱楚地歌曲以引起楚軍思家之情，瓦解戰鬥力，是漢語成语“四面楚歌”的來歷。
1850年代，思家病已經不被視為一種特定的疾病，而被認為是一個病態過程的徵候或者一個階段。它被認為是憂鬱症或自殺傾向的表現。然而，思家病在晚至美國南北戰爭時仍然在士兵中診斷出。
到了1870年代，把思家病當作醫療範疇的興趣幾乎已經不見了。多數人把這種疾病的減少當作一件好事，進步的結果。但是有些人哀嘆於失去這種病的根源－即對家鄉的感情。當然，思家病這種現象並沒有跟著它的去醫療化而消失。
其他意涵

雖然鄉愁可能有非常具體、可量的生理症狀，然而鄉愁不只是一種醫學上的狀態。例如：鄉愁是中國今體詩的一項重要的創作動機。
參見

懷舊
康斯坦丁尼夫卡 (薩爾內區)

康斯坦丁尼夫卡（烏克蘭語：）是烏克蘭西北部羅夫諾州村落，由薩爾內區薩爾內市鎮（烏克蘭語：）管轄，始建於1921年，面積1.89平方公里，海拔高度157米，2001年人口909人，人口密度每平方公里480.7人。
參考資料

↑  . 新华社. 2023-04-03 （中文（中国大陆））.  缺少或|url=为空 (帮助)
外部連結

Костянтинівка （页面存档备份，存于）
Село на сайті Верховної ради України （页面存档备份，存于）
Погода в селі Костянтинівка （页面存档备份，存于）
加彭細歧鬚鱨

| 加彭細歧鬚鱨> 保护状况 |
| --- | --- |
 数据缺乏（IUCN 3.1）
科学分类 
界：: 动物界 Animalia
门：: 脊索动物门 Chordata
纲：: 綱 Actinopteri
目：: 形目 Siluriformes
科：: 倒立鯰科 Mochokidae
属：: 細歧鬚鱨屬 Microsynodontis
种：: 加彭細歧鬚鱨 M. notata
二名法
Microsynodontis notata Ng, 2004

加彭細歧鬚鱨，為輻鰭魚綱鯰形目倒立鯰科的其中一種，為熱帶淡水魚，分布於非洲加彭奥果韦河流域，體長可達5.4公分，棲息在底中層水域，生活習性不明。
加利納鎮區 (內布拉斯加州迪克森縣)

| 加利納鎮區 Galena Township |
| --- | --- |
行政鎮區

加利納鎮區加利納鎮區在內布拉斯加州的位置
坐标：42°28′54″N 96°50′15″W﻿ / ﻿42.48167°N 96.83750°W﻿ / 42.48167; -96.83750
國家: 美国
州份: 內布拉斯加州
縣: 迪克森縣
面积
 • 总计: 93.20 平方公里（35.98 平方英里）
 • 陸地: 93.02 平方公里（35.92 平方英里）
 • 水域: 0.18 平方公里（0.07 平方英里）
海拔: 389 公尺（1,276 英尺）
人口（2020）
 • 總計: 244人
 • 密度: 2.62人/平方公里（6.78人/平方英里）
时区: CST（UTC-6）
 • 夏时制: CDT（UTC-5）
電話區號: 402（英语：）
GNIS ID: 838014
加利納鎮區（英語：）是位於美國內布拉斯加州迪克森縣的一個行政鎮區。
地方資料

加利納鎮區的面積為93.20平方千米，當中陸地面積為93.02平方千米，而水域面積為0.18平方千米。根據2020年美國人口普查的數據，當地共有人口244人，而人口密度為每平方千米2.62人。
參考文獻

1 2  . 2020 United States Census. United States Census Bureau.   [2021-09-14].
↑  . . United States Geological Survey.