网站建设员课程,电子商务网站开发价格,网站开发技术员,如何做网络推广推广把数据放进若干个桶#xff0c;然后在桶里用其他排序#xff0c;近乎分治思想。从数值的低位到高位依次排序#xff0c;有几位就排序几次。例如二位数就排两次#xff0c;三位数就排三次#xff0c;依次按照个十百...的顺序来排序。 第一次排序#xff1a;50 12 …把数据放进若干个桶然后在桶里用其他排序近乎分治思想。从数值的低位到高位依次排序有几位就排序几次。例如二位数就排两次三位数就排三次依次按照个十百...的顺序来排序。 第一次排序50 12 43 23 33 15 66 98 18 89 第二次排序12 15 18 23 33 43 50 66 89 98 代码 //桶排序
void bucket_sort(int* a, int len){ int n 1;int idx;int k;int* pTemp NULL;while (nAREA){//循环 log10AREA 次//1 做桶 并初始化桶pTemp malloc(10 * len *sizeof(int));
#if 0for (int i 0; i 10; i){for (int j 0; j len; j){pTemp[i*len j] -1;}}
#elsefor (int i 0; i 10*len; i){pTemp[i] -1;}
#endif//2 根据特性(对应位作为桶的编号)放入桶中for (int i 0; i len; i){//a[i]idx a[i] / n % 10;//获取到数据这一轮要看的位上的数据pTemp[ idx*len i] a[i];}//3 从桶中取出覆盖a数组k 0;for (int i 0; i 10 * len; i){if (pTemp[i] ! -1)a[k] pTemp[i];}//4 销毁桶free(pTemp);pTemp NULL;n * 10;}
}