一开始我想要优化堆排序,使得堆排序的空间复杂度减小; 优化的思想很简单;我们并不申请一个与原数组大小一致的空间,而是申请一个他的映射数组; 当我们堆排序 insert 和 delete 后,映射数组中就存储了有序数据的信息; 例如:映射数组mapTab[0] = 20; //也就意味着真正有序数组的第0位是现在数组的第20位;将第...
1.1 vector(数组)封装动态数组的顺序容器。 1.2 queue(队列)是容器适配器,他是FIFO(先进先出)的数据结构。 1.3 deque(双端队列)是有下标顺序容器,它允许在其首尾两段快速插入和删除。 1.4 set(集合)集合基于红黑树实现,有自动排序的功能,并且不能存放重复的元素。 1.5 unordered_set(无序集合)基于哈希表实现,...
在C语言中,可以使用sort函数对vector进行排序。下面是一个示例代码: #include <stdio.h> #include <stdlib.h> // 比较函数,用于sort函数的第三个参数 int compare(const void *a, const void *b) { return (*(int*)a - *(int*)b); } int main() { int arr[] = {5, 2, 8, 1, 9}; int...
1确定是否真正需要在中间位置插入,可以用vector再用sort排序; 2如必须在中间插入元素,可在输入阶段用list,完了之后拷贝到vector insert与emplace(emplace_back、emplace_front) emplace是直接将参数传递给元素类型的构造函数,在容器管理的内存空间中直接构造元素。 与insert相比,省去了构造临时对象,减少了内存开销。 类型...
#include <iostream> #include <vector> #include <algorithm> void bucketSort(std::vector<int> &arr, int bucketSize) { if (arr.empty()) { return; } // 找到最大值和最小值 int minValue = arr[0]; int maxValue = arr[0]; for (int i = 1; i < arr.size(); i++) { if (arr...
递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序 代码: voidQuickSort(vector&v,intlow,inthigh){ if(low>=high)//结束标志 return; intfirst=low;//低位下标 intlast=high;//高位下标 intkey=v[first];//设第一个为基准 ...
c语言5个常用的排序算法实例代码 1.插入排序 基本思想:插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 void insertSort(vector<int>& nums) int k = 0; for (int i = 0; i < nums.size(); ++i)...
(1)在未排序序列中找到最小(大)元素,存放到排序序列的起始位置; (2)从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末; (3)以此类推,直到所有元素均排序完毕; 代码: void selectionSort(int arr[], int n) { int minIndex, temp; ...
常用排序分类 //冒泡排序 //思路:从左到右每两个数之间进行比较排序,直到比较到最后一个数为一趟 //时间复杂度为O(n^2) void BubbleSort(vector<int> &v) {//v需要改变,所以使用引用,数组不需要加引用 for (int i = 1; i < v.size(); i++) { ...
输出一行,按从小到大的顺序输出排序后的数列。 样例输入 5 8 3 6 4 9 样例输出 3 4 6 8 9 */ #include<iostream> #include<vector> #include<algorithm> using namespace std; vector<int> v; //向量 void Add() { int temp;int N;