请根据上课所学内容完成基数排序算法。 算法输入: n,数组长度 data, 数组... 300 339 438 580 870
/********************* 基数排序: 输入:data, 数组名 n,数组长度 d,数字位数 ************************/ void RadixSort(int data[], int n, int d) { int *tmp = new int[n]; int count[10]; int i, j, k; int radix = 1; for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++)//每次分配前计数器清0 count[j] = 0; for (j = 0; j < n; j++)//统计每个桶有多少个数字 { k = (data[j] / radix) % 10; count[k]++; } for (j = 1; j < 10; j++)//统计每个桶的累计数目 { count[j] = count[j - 1] + count[j]; } for (j = n - 1; j >= 0; j--) { k = (data[j] / radix) % 10; tmp[count[k] - 1] = data[j]; count[k]--; } for (j = 0; j < n; j++) data[j] = tmp[j]; radix *= 10; } } }
举一反三
- 在归并排序算法中,若每次分解将长度为 n的数组分为四段长度为 n/4的子数组进行递归,此时归并排序算法的时间复杂度为____
- 在归并排序算法中,若每次分解将长度为 n 的数组分为四段长度为 n/4 的子数组进行递归,此时归并排序算法的时间复杂度为____ 未知类型:{'options': ['', '', '', ''], 'type': 102}
- 归并排序算法在排序过程中,将待排序数组分为两个大小相同的子数组,分别对两个子数组采用递归排序算法进行排序,排好序的两个子数组采用时间复杂度为O(n)的过程合并为一个大数组。根据上述描述,归并排序算法采用了( )算法设计策略。(软件设计师2021下半年) A: 分治 B: 动态规划 C: 贪心 D: 回溯
- 请编写一个程序,通过冒泡排序算法对数组intb[]={25,24,12,76,101,96,28}进行排序。
- 数组的排序算法只有冒泡排序这一种
内容
- 0
关于冒泡和选择排序算法说法正确的是() A: 冒泡排序算法优于选择排序算法 B: 选择排序算法优于冒泡排序算法 C: 冒泡排序算法可以把一列数字从大到小进行排列 D: 选择排序的原理是额外创建一个数组,从原数组中找到最小值或者最大值,然后push进新创建的数组
- 1
下列算法中可实现数组排序的是(__)
- 2
对一个数值在(1,100)之间的数组进行排序,假设共有n个元素。(1)试给出基数排序的空间消耗,桶数,总需要时间。 (2)给出在基数排序过程中找出n个元素(n>10)前10个最大的算法思想。
- 3
以下哪种排序算法是稳定排序算法? A: 选择排序 B: 快速排序 C: 希尔排序 D: 基数排序
- 4
中国大学MOOC: 5.数组的排序算法只有冒泡排序这一种。( )