#include
#include
#include
//#include "circularlistwithheader.h"
#include
"extendedchain.h"
#include
/*本演算法為箱子排序的演算法
* author: zailushang
* data: 2020-06-27
* *目的為了熟悉c++的雙向鍊錶
* **/#define buffsize 1000000
#define radix 100
struct studentrecord
operator
int(
)const
studentrecord()
:sort(0
),name
(null
)studentrecord
(int sorts,std::string *names)
:sort
(sorts)
,name
(names)};
void
binsort
(std::list
&thelist,
int range)
for(
int i =
0; i <= range;
++i)
}delete
p;std::cout<<
"the bin sort time is "
<<
float
(clock()
-t)/clocks_per_sec;
}void
binsortbylist
(extendedchain
&thelist,
int range)
for(
int j = range;j >=0;
--j)
}delete
p;}void
binsortusedbyradix
(extendedchain
&thelist,
int c)
for(
int j = listsize;j >=0;
--j)
}delete
p;}void
radixsort
(extendedchain
&thelist,
int range)
for(
int j = listsize;j>=0;
--j)
}//binsortusedbyradix(thelist,i+1);
}delete
p;}int
main()
/* 經過上述的測試比較,發現stl官方給的雙向鍊錶不如自己寫的單向鍊錶的插入和箱子排序速度快,因為主要是插入的時候需要兩個
指標進行要轉換,肯定會比單鏈表慢。
氣泡排序比箱子排序法慢了不止一點兩點(在大資料的情況下)
*/
這裡說明一點,基數排序桶排序的乙個優化。但是如果輸入範圍和你的桶的個數一樣的時候,基數排序的優勢就沒有那麼大了。
記住:雖然基數排序的時間複雜度雖然有o(n),桶排序有o(n+range)。但是在實際中,在某種情況下,基數排序不一定比桶排序快。
(箱子)桶排序及基數排序
桶排序是基於鍊錶的,相鄰的桶之間和桶中相鄰的元素之間皆用鍊錶相連線,可以把它想象成乙個矩陣。用乙個例子來說明桶排序。假設有乙個鍊錶,其中的元素需要進行排序,元素為abcdefghij,其值依次為2454304344,如a2 b4 c5 d4 e3 f0 g4 h3 i4 j4。若根據值進行排序。首先...
基數排序(桶排序)
1。什麼是基數排序 radix sort 基數排序 屬於分配式排序 distribution sort 又稱 桶排序 bucket sort 它是通過鍵值的各個位的值,將要排序的元素分配至某些 桶 中,達到排序的作用。2.它和歸併一樣,屬於穩定型演算法。public void radixsort i...
基數排序(桶排序)
思想 先把這組資料的個位排有序,再把十位排有序,再排百位 千位 include include include include void showarr int arr,int len printf n int getmaxnumfin int arr,int len 找陣列中最大數,並求出最大數的...