如何写一个可以排所有类型的冒泡排序

目录

        1.分析快速排序qsort

        2.分析思路

        3.代码实现


        1.分析快速排序qsort函数

                void qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*));

                void *base 传首元素的地址

                size_t num 传数组的长度

                size_t size 传每个元素的字节大小

                int (*compar)(const void*,const void *)是一个函数的地址

                这个函数是自己写的判断函数,返回值是int

                如果第一个元素大于第二个元素返回大于一的数

                如果第一个元素等于第二个元素返回等于一的数

                如果第一个元素小于第二个元素返回小于一的数

         2.思路分析

                既然分析出qsort函数每个参数的意思那就可以通过分析参数的用处来实现通用的冒泡排序

        void *base 首元素的地址不用说,先将首元素的地址传过去定位这个数组

        size_t num 数组的长度,需要这个参数是为了数组确定到哪结束

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
3); pq.push(1); pq.push(2); while (!pq.empty()) { std::cout << pq.top() << " "; 好的,以下是用 JavaScript 实现冒泡排序的代码: ```javascript function bubbleSort(array) { const len = array pq.pop(); } ``` 26. 不要在迭代器失效的情况下修改容器 在使用 STL 容.length; for (let i = 0; i < len; i++) { for (let j = 0; j <器时,应该注意容器的迭代器是否会因为修改容器而失效。如果迭代器失效 len - 1 - i; j++) { if (array[j] > array[j + 1]) { [array[j],,则可能会导致未定义的行为。 27. 不要在使用 std::vector、std::string 或 std::deque array[j + 1]] = [array[j + 1], array[j]]; } } } return array; } ``时使用迭代器的比较运算符 在使用 std::vector、std::string 或 std::deque 时,应` 这里的 `bubbleSort` 函数接收一个数组作为参数,然后使用双重循环遍历数组,每该避免使用迭代器的比较运算符,因为这可能会导致未定义的行为。 28.次比较相邻的两个元素,如果前一个元素比后一个元素大,则交换它们的位置 在使用 std::unique_ptr 时,使用 std::move 将所有权转移 在使用 std::unique_ptr 时,应。经过一轮比较后,最大的元素会被移动到数组的最后面。然后再进行下一轮比较,不断重复这个过程,直到所有元素都被好序为止。 使用该使用 std::move 函数将所有权转移。这可以避免不必要的拷贝和析构开销。例如示例: ```javascript const arr = [3, 1, 4, 1, 5, 9, 2: ``` std::unique_ptr<int> p1(new int(1)); std::unique_ptr<int> p2(std::move(p1, 6, 5, 3, 5]; const sortedArr = bubbleSort(arr); console.log(sortedArr); // 输出 [)); ``` 29. 使用 std::function 来存储函数对象 STL 提供了 std::function 类型,可以方便1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值