桶排序(Bucket Sort)----(排序算法七)

傷城~ 2022-09-17 14:16 210阅读 0赞

1.算法原理

将元素的值放入另一数组下标与其相等的位置

排序前: 6 2 4 1 5 9
桶中:bucket[10]= 0 1 2 0 4 5 6 0 0 9

有bucket[6]=6,bucket[2]=2,bucket[4]=4,bucket[1]=1,bucket[5]=5,bucket[9]=9

2.代码实现

  1. #include <stdio.h>
  2. //printArray打印出数组
  3. void printArray(int a[],int size){
  4. // printf("数组为:[%d] ",a[0]);
  5. for (int i=0;i<size;i++)
  6. {
  7. printf(" %x ",a[i]);
  8. }
  9. printf("\n");
  10. }
  11. void main()
  12. {
  13. int a[6] ={ 6, 2, 4, 1, 5, 9 };
  14. int len=6;
  15. //分配空桶
  16. int bucket[10]={0} ;
  17. printf("排序前:");
  18. printArray(a,len);
  19. //直接以每个待排数字为索引,将自己的值赋值给当前桶
  20. for (int i = 0; i < len; i++) {
  21. bucket[a[i]] = a[i];
  22. }
  23. //跳过值为0的空桶,顺序输出即可
  24. int temp=0;
  25. for (int j = 0; j < 10; j++){
  26. if (bucket[j] > 0)
  27. a[temp++]=bucket[j];
  28. }
  29. printf("排序后:");
  30. printArray(a,len);
  31. }

3.排序结果

  1. 排序前: 6 2 4 1 5 9
  2. 排序后: 1 2 4 5 6 9

发表评论

表情:
评论列表 (有 0 条评论,210人围观)

还没有评论,来说两句吧...

相关阅读

    相关 排序算法 - 排序

    前言 桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使

    相关 排序算法-排序

    先创建若干个桶,每个桶存放不同范围的数据 桶和桶之间的跨度=(数据最大值-数据最小值)/ (桶的数量 - 1) 假设有一个数组:1.2,0.5,4.5,2.6,2.7