求無序陣列排序後相鄰兩個數的最大差值

2021-08-15 10:35:16 字數 1081 閱讀 6037

** 缺點:當陣列中元素懸殊很大時,如1、2、100000000,則需要構造乙個長度是100000000的新陣列array,則該方法不可取。**

假設原陣列長度為n

最大差值肯定出現在空桶附近。(非空桶內部最大差值d)

空間複雜度:o(n),時間複雜度:o(n)(總共掃瞄3次)。

int maxgap(std::vector&vecnum)

else if (nmin > vecnum[nindex])

}// 桶的個數

int nbucketnum = vecnum.size() + 1;

// 每個桶的區間長度

int nbucketlength = (nmax - nmin) / vecnum.size();

// 記錄桶的最小值

std::vectorvecbucketmin(nbucketnum, int_max);

// 記錄桶的最大值

std::vectorvecbucketmax(nbucketnum, int_min);

// 獲取每個桶內的最小和最大值

for (int nindex = 0; nindex < vecnum.size(); nindex++)

if (vecbucketmin[nbucketindex] > vecnum[nindex])

}// 計算每乙個空桶右端非空桶中的最小值,與空桶左端非空桶的最大值的差

int nmaxgap = 0;

int npremax = vecbucketmax[0];

bool nemptybucket = false;

for (int nbucketindex = 1; nbucketindex < nbucketnum; nbucketindex++)

npremax = vecbucketmax[nbucketindex];

nemptybucket = false;

} else

}return nmaxgap;

}

桶 求無序陣列排序後,最大的相鄰差值

引言 無限長的無序陣列 正負零都有可能。求出排序後最大的相鄰的差值 時間複雜度o n 且要求不能用非基於比較的排序 思路1.找出陣列中的最大元素,分配最大元素 1個桶,對桶等分如一號桶 0 9 二號桶 10 19 2.因為元素最大是n,所以準備了n 1個桶,所以肯定最小桶和最大桶肯定有數,中間有空桶...

無序陣列排序後的最大相鄰差

無序陣列排序後的最大相鄰差 public class maxdis int d max min 1.如果 max和min相等則說明陣列中所有元素都相等則,返回0 if d 0 2.初始化桶 int bucketnum array.length bucket buckets newbucket buc...

求兩個排序陣列的中位數

設x 1.n 和y 1.n 為兩個陣列,每個都包含n個已排序好的數。給出乙個求陣列x和y中所有2n個元素的中位數的 o lgn 時間的演算法。演算法思想 該演算法類似於二分查詢演算法 1.兩個陣列中小於median的個數為 n 1 個,假設該median為陣列a中的第k個,k為陣列下標,那麼在陣列a...