Home > Backend Development > C++ > How to use bucket sort algorithm in C++

How to use bucket sort algorithm in C++

王林
Release: 2023-09-19 11:43:47
Original
1386 people have browsed it

How to use bucket sort algorithm in C++

How to use the bucket sort algorithm in C

Bucket Sort is a sorting algorithm with linear time complexity, which is based on the concept of buckets A sorting algorithm for sorting. The basic idea of ​​bucket sorting is to divide the data to be sorted into several ordered buckets, and then sort each bucket separately.

In C, we can use vector containers and iterators to implement the bucket sort algorithm. The following is a specific sample code:

#include <iostream>
#include <vector>
#include <algorithm>

void BucketSort(std::vector<int>& arr, int numBuckets) {
    // 创建桶
    std::vector<std::vector<int>> buckets(numBuckets);
    
    // 将元素放入桶中
    for (int i = 0; i < arr.size(); i++) {
        int bucketIdx = arr[i] / numBuckets;
        buckets[bucketIdx].push_back(arr[i]);
    }
    
    // 对每个桶进行排序
    for (int i = 0; i < buckets.size(); i++) {
        std::sort(buckets[i].begin(), buckets[i].end());
    }
    
    // 将排序好的元素放回原数组
    int index = 0;
    for (int i = 0; i < buckets.size(); i++) {
        for (int j = 0; j < buckets[i].size(); j++) {
            arr[index++] = buckets[i][j];
        }
    }
}

int main() {
    std::vector<int> arr = {5, 2, 8, 3, 1, 9, 4, 6, 7};
    
    std::cout << "Before sorting: ";
    for (int i = 0; i < arr.size(); i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
    
    // 指定桶的数量为3
    BucketSort(arr, 3);
    
    std::cout << "After sorting: ";
    for (int i = 0; i < arr.size(); i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;
    
    return 0;
}
Copy after login

In the above code, we define a BucketSort function to implement the bucket sorting algorithm. This function receives an integer array arr and the specified number of buckets numBuckets as parameters. First, we create a two-dimensional vector buckets to represent buckets, each bucket stores a portion of elements. We then put the elements into corresponding buckets based on their values. Next, the elements in each bucket are sorted. Finally, we put the sorted elements back into the original array.

In the main function, we create an integer array arr and initialize some elements. Then, call the BucketSort function to sort. Finally, we output the array contents before and after sorting.

Run the above code, the output result is as follows:

Before sorting: 5 2 8 3 1 9 4 6 7
After sorting: 1 2 3 4 5 6 7 8 9
Copy after login

You can see that after sorting by the bucket sort algorithm, the contents of the array have been arranged in ascending order.

The time complexity of bucket sorting is O(n k), where n is the number of elements to be sorted and k is the number of buckets. Since the number of buckets is fixed, the time complexity of bucket sorting can be considered linear. However, bucket sorting has a high space complexity and requires additional space to store buckets.

In summary, using the bucket sorting algorithm in C can quickly sort data, just provide a suitable number of buckets. When using the bucket sorting algorithm, you need to consider the distribution of elements to select the appropriate number of buckets to avoid wasting bucket space or uneven distribution of elements.

The above is the detailed content of How to use bucket sort algorithm in C++. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template