【桶排序算法实现】桶分类也称为垃圾桶分类。它通过将元素分布到也称为存储桶的数组中来工作。使用不同的排序算法分别对存储桶进行排序。
桶分类的复杂性
算法 | 复杂 |
---|---|
Space | O(1) |
最差的情况 | O(n2) |
最好的情况 | Ω(n + k) |
平均情况 | θ(n+k) |
- 步骤1开始
- 步骤2设置最初为空的“存储桶”数组。
- 步骤3散点图:遍历原始数组, 将每个对象放入其存储桶中。
- 步骤4对每个非空存储桶进行排序。
- 步骤5收集:按顺序访问存储桶, 然后将所有元素放回到原始数组中。
- 步骤6停止
#include <
stdio.h>
void Bucket_Sort(int array[], int n){int i, j;
int count[n];
for (i = 0;
i <
n;
i++)count[i] = 0;
for (i = 0;
i <
n;
i++)(count[array[i]])++;
for (i = 0, j = 0;
i <
n;
i++)for(;
count[i] >
0;
(count[i])--)array[j++] = i;
}/* End of Bucket_Sort() */ /* The main() begins */int main(){int array[100], i, num;
printf("Enter the size of array : ");
scanf("%d", &
num);
printf("Enter the %d elements to be sorted:\n", num);
for (i = 0;
i <
num;
i++)scanf("%d", &
array[i]);
printf("\nThe array of elements before sorting : \n");
for (i = 0;
i <
num;
i++)printf("%d ", array[i]);
printf("\nThe array of elements after sorting : \n");
Bucket_Sort(array, num);
for (i = 0;
i <
num;
i++)printf("%d ", array[i]);
printf("\n");
return 0;
}
推荐阅读
- 数据结构(循环双链表)
- 冒泡排序算法实现全解
- 图遍历算法(广度优先搜索算法)
- 比并排序算法实现详解
- B树实现详细步骤解析
- B+树实现详细步骤解析
- 二叉树(binary tree)实现详解
- 二叉查找树(binary search tree)实现详解
- 二分法搜索算法实现详解