計數排序是一種穩定的排序,屬於非比較類排序,其基本思想是:對於給定的輸入序列中的每乙個元素 x,確定該序列中值小於 x 的元素的個數,一旦有了這個資訊,就可以將 x 直接存放到最終的輸出序列的正確位置上。
例如,如果輸入序列中只有 17 個元素的值小於 x 的值,則 x 可以直接存放在輸出序列的第 18 個位置上。當然,如果有多個元素具有相同的值時,不能將這些元素放在輸出序列的同乙個位置上,在**中作適當的修改即可。
計數排序的排序過程為:
找出待排序的陣列中最大和最小的元素
統計陣列中每個值為i的元素出現的次數,存入陣列c的第i項
對所有的計數累加(從c中的第乙個元素開始,每一項和前一項相加)
反向填充目標陣列:將每個元素i放在新陣列的第c(i)項,每放乙個元素就將c(i)減去1
#define maxnum 20//待排序數的最大個數
#define max 100//待排序數的最大值
int res[maxnum];
int temp[max+1];
void countsort(int a, int n)
}
理論基礎 排序 逆序對問題
設a為乙個有n個數字的有序集,其中所有數字各不相同。如果存在整數i j,使得1 ia j 則這個有序對稱為a的乙個逆序對。例如 集合的逆序對有 共4個。而逆序對問題,即 對給定的陣列序列,求其逆序對的數量。從定義上分析,逆序對就是數列中任意兩個數滿足大的在前,小的在後的組合。如果將這些逆序對都調整為...
TCP IP理論基礎
一 tcp ip的分層模型 osi協議參考模型,它是基於國際標準化組織 iso 的建議發展起來的,它分為7個層次 應用層 表示層 會話層 傳輸層 網路層 資料鏈路層及物理層。這個7層的協議模型雖然規定得非常細緻和完善,但在實際中卻得不到廣泛的應用,其重要的原因之一就在於它過於複雜。但它仍是此後很多協...
TCP IP理論基礎
linux中網路棧的介紹一般分為四層的internet模型。分別為應用層 傳輸層 網際層和網路介面。tcp ip實際上是乙個協同工作的通訊家族,為網路資料通訊提供通路。為方便將tcp ip協議族大致上分為三部分 1.internet協議 ip 這一部分也稱為網路層。主要包括ip icmp和arp。其...