zoukankan      html  css  js  c++  java
  • 桶排序

    算法:

    1、设置一个定量的数组当作空桶子。

    2、寻访串行,并且把项目一个一个放到对应的桶子去。

    3、对每个不是空的桶子进行排序。

    4、从不是空的桶子里把项目再放回原来的串行中。

    include <time.h>  
    02.#include <iostream>  
    03.#include <iomanip>  
    04.using namespace  std;  
    05.  
    06./*initial arr*/  
    07.void InitialArr(double *arr,int n)  
    08.{  
    09.srand((unsigned)time(NULL));  
    10.for (int i = 0; i<n;i++)  
    11.{  
    12.arr[i] = rand()/double(RAND_MAX+1);   //(0.1)  
    13.}  
    14.}  
    15.  
    16./* print arr*/  
    17.void PrintArr(double *arr,int n)  
    18.{  
    19.for (int i = 0;i < n; i++)  
    20.{  
    21.cout<<setw(15)<<arr[i];  
    22.if ((i+1)%5 == 0 || i ==  n-1)  
    23.{  
    24.cout<<endl;  
    25.}  
    26.}  
    27.}  
    28.  
    29.void BucketSort(double * arr,int n)       
    30.{  
    31.double **bucket = new double*[10];  
    32.for (int i = 0;i<10;i++)  
    33.{  
    34.bucket[i] = new double[n];  
    35.}  
    36.int count[10] = {0};  
    37.for (int i = 0 ; i < n ; i++)  
    38.{  
    39.double temp = arr[i];  
    40.int flag = (int)(arr[i]*10); //flag标识小树的第一位   
    41.bucket[flag][count[flag]] = temp; //用二维数组的每个向量来存放小树第一位相同的数据  
    42.int j = count[flag]++;  
    43.  
    44./* 利用插入排序对每一行进行排序 */  
    45.for(;j > 0 && temp < bucket[flag][j - 1]; --j)  
    46.{  
    47.bucket[flag][j] = bucket[flag][j-1];  
    48.}  
    49.bucket[flag][j] =temp;  
    50.}  
    51.  
    52./* 所有数据重新链接 */  
    53.int k=0;  
    54.for (int i = 0 ; i < 10 ; i++)  
    55.{  
    56.for (int j = 0 ; j< count[i];j++)  
    57.{  
    58.arr[k] = bucket[i][j];  
    59.k++;  
    60.}  
    61.}  
    62.for (int i = 0 ; i<10 ;i++)  
    63.{  
    64.delete bucket[i];  
    65.bucket[i] =NULL;  
    66.}  
    67.delete []bucket;  
    68.bucket = NULL;  
    69.}  
    70.  
    71.void main()  
    72.{  
    73.double *arr=new double[10];  
    74.InitialArr(arr, 10);  
    75.BucketSort(arr, 10);  
    76.PrintArr(arr,10);  
    77.delete [] arr;  
    78.}  
  • 相关阅读:
    链表的Java实现
    java知识点
    java知识点
    Android基础知识总结
    Android基础知识总结
    路由知识之ip route 命令中的疑惑
    Integer与int的种种比较
    求二叉树的宽度C语言版
    求二叉树的宽度C语言版
    二叉树的建立与递归遍历C语言版
  • 原文地址:https://www.cnblogs.com/yl-saber/p/6933657.html
Copyright © 2011-2022 走看看