• 排序算法-基数排序法(RadixSort)


    排序算法-基数排序法(RadixSort)

    1、说明

    基数排序法与我们之前讨论的排序法不太一样,并不需要进行元素之间的比较操作,而是属于一种分配模式排序方式

    基数排序法比较的方向可分为最高位优先(Most Significant Digit First,MSD)和最低位优先(Least Significant Digit First,LSD)两种。MSD是从最左边的位数开始比较的,而LSD则是从最右边的位数开始比较的。

    2、算法分析

    1. 在所有情况下,时间复杂度均为O(n{log_{p}}^{k}),k是原始数据的最大值。
    2. 基数排序法是稳定排序法。
    3. 基数排序法要使用很大的额外空间来存放列表数据,其空间复杂度为O(n*p),n是原始数据的个数,p是数据字符数。
    4. 若n很大,p固定或很小,则此排序法的效率很高。

    3、C++代码 

    1. #include
    2. #include
    3. using namespace std;
    4. void PrintData(int data[], int size) {
    5. for (int i = 0; i < size; i++) {
    6. cout << data[i] << " ";
    7. }
    8. cout << endl;
    9. }
    10. void SetData(int data[], int size) {
    11. srand(time(nullptr));
    12. for (int i = 0; i < size; i++) {
    13. data[i] = rand() % 999 + 1;
    14. }
    15. }
    16. void Radix(int data[], int size) {
    17. for (int n = 1; n <= 100; n *= 10) {
    18. int temp[10][100] = { 0 };
    19. for (int i = 0; i < size; i++) {
    20. int m = (data[i] / n) % 10;
    21. temp[m][i] = data[i];
    22. }
    23. int k = 0;
    24. for (int i = 0; i < 10; i++) {
    25. for (int j = 0; j < size; j++) {
    26. if (temp[i][j] != 0) {
    27. data[k] = temp[i][j];
    28. k++;
    29. }
    30. }
    31. }
    32. cout << "经过" << setw(3) << n << "位排序后:";
    33. PrintData(data, size);
    34. }
    35. }
    36. int main() {
    37. int size = 20;
    38. int* data = new int[size];
    39. SetData(data, size);
    40. cout << "原始数据:";
    41. PrintData(data, size);
    42. cout << "---------------------------------" << endl;
    43. Radix(data, size);
    44. cout << "---------------------------------" << endl;
    45. cout << "最终数据:";
    46. PrintData(data, size);
    47. return 0;
    48. }

    输出结果 

  • 相关阅读:
    mysql误删数据后 快速恢复的办法
    AE Saber插件学习笔记
    【数组】逐步求和得到正数的最小值
    java栈和自定义栈
    【电控笔记5.7】Notch-Filter滤波器
    RockTree TOKEN2049 Party爆火,一场千亿规模的“超级聚会”
    数组元素全排列Java
    java基于springboot的社区物业维修报修平台—计算机毕业设计
    导出oracle远程数据库到本地
    响应式动画登录
  • 原文地址:https://blog.csdn.net/qq_40660998/article/details/133849868