《演算法導論》裡的counting_sort,用c++實現有問題:
#include#include
using
namespace std;
void counting_sort(vector&a, vector
&b, const
int& k)
delete c;
}
int main(); for (auto index : coll)
cout << index << " ";
cout << endl;
vector
coll2(coll.size()+1,0); //b的size要比a大1,因為前面有1個0,如果不加1的話,vector就會out of range
counting_sort(coll, coll2, 16); //至於如何解決這個加1的問題我還不知道。
for (auto index : coll2)
cout << index << " ";
cout << endl;
return 0;
}
a的編號: 0 1 2 3 4 5 6 7 8 9
a(coll):1 2 4 3 8 7 9 10 14 16
c的編號: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
c :0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 0 1
c[i] += c[i - 1];之後:
c的編號: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
c :0 1 2 3 4 4 4 5 6 7 8 8 8 8 9 9 10
b的編號: 0 1 2 3 4 5 6 7 8 9 10
b(coll2): 0 1 2 3 4 7 8 9 10 14 16
如上所示,b的0位多了1個0,而多了乙個b[10]位,所以如果b與a一樣大的話,則out of range。
至於如何解決問題我不知道。
《演算法導論》學習筆記 排序問題
核心思想 就相當於你在抓取撲克牌,第一張撲克牌是不用排序的,當你抓取第二張撲克牌的時候才與之前的撲克牌排序,當你抓取第三張撲克牌的時候,第 一 二張撲克牌是已經排好的。package com.example public class myclass i沒有以0開始,是因為第一張撲克牌不用排序,相當於...
生日悖論問題 《演算法導論學習筆記》
乙個房間裡的人數必須達到多少,才能使兩個人生日相同的機會達到 50 不考慮閏年情況,也就是一年按照 365天來計算。解答 假設房間裡的人數是 k,我們對其進行編號 1,2,k 為簡單起見,用 n表示一年的天數 也就是 365天 那麼乙個人的生日在一年中的哪一天應該是機會均等的,我們用 bi表示第 i...
演算法導論 僱傭問題
首先介紹一點數學知識。事件 a 的指示器隨機變數i i i定義為 i begin 1 quad 如果a發生 0 quad 如果a不發生 end i pre i pr e i p r,其中p rpr pr為事件a發生的概率。期望性質 期望的和等於和的期望,即若x xix sum x xi 則e xi ...