#include
#include
#include
using std::vector;
/*****************
æ¡¶æåºï¼å°å¼ä¸ºiçå
ç´ æ¾å
¥iå·æ¡¶ï¼æå便¬¡ææ¡¶éçå
ç´ ååºæ¥ã
æ¡¶æåºåºæè·¯ï¼
1. 设置ä¸ä¸ªå®éçæ°ç»å½ä½ç©ºæ¡¶åã
2. 寻访åºåï¼å¹¶ä¸æé¡¹ç®ä¸ä¸ªä¸ä¸ªæ¾å°å¯¹åºçæ¡¶åå»ã
3. 对æ¯ä¸ªä¸æ¯ç©ºçæ¡¶åè¿è¡æåºã
4. ä»ä¸æ¯ç©ºçæ¡¶åéæé¡¹ç®åæ¾å忥çåºåä¸ã
åè®¾æ°æ®åå¸å¨[0ï¼100)ä¹é´ï¼æ¯ä¸ªæ¡¶å
é¨ç¨é¾è¡¨è¡¨ç¤ºï¼å¨æ°æ®å
¥æ¡¶çåæ¶æå
¥æåºï¼ç¶åæå个桶ä¸çæ°æ®åå¹¶ã
*****************/
const int BUCKET_NUM = 10;
struct ListNode{
explicit ListNode(int i=0):mData(i),mNext(NULL){}
ListNode* mNext;
int mData;
};
ListNode* insert(ListNode* head,int val){
ListNode dummyNode;
ListNode *newNode = new ListNode(val);
ListNode *pre,*curr;
dummyNode.mNext = head;
pre = &dummyNode;
curr = head;
while(NULL!=curr && curr->mData<=val){
pre = curr;
curr = curr->mNext;
}
newNode->mNext = curr;
pre->mNext = newNode;
return dummyNode.mNext;
}
ListNode* Merge(ListNode *head1,ListNode *head2){
ListNode dummyNode;
ListNode *dummy = &dummyNode;
while(NULL!=head1 && NULL!=head2){
if(head1->mData <= head2->mData){
dummy->mNext = head1;
head1 = head1->mNext;
}else{
dummy->mNext = head2;
head2 = head2->mNext;
}
dummy = dummy->mNext;
}
if(NULL!=head1) dummy->mNext = head1;
if(NULL!=head2) dummy->mNext = head2;
return dummyNode.mNext;
}
void BucketSort(int n,int arr[]){
vector buckets(BUCKET_NUM,(ListNode*)(0));
for(int i=0;imData;
head = head->mNext;
}
}