C++数据结构的一些代码(排序部分)

C++知识点总结(16):结构体排序 第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的志愿者人数。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。 阅读详情

六、排序

1.内部排序

1.1插入排序

1.1.1直接插入排序

下面的代码用了哨兵,也可以不用。

#include <iostream>
using namespace std;

void Show(int arr[], int n)
{
    for (int i = 1; i <= n; i++)
    {
        cout << arr[i];
        if (i < n)
            cout << ' ';
    }
    cout << endl;
}
void Sort(int arr[], int n)
{
    for (int i = 2; i <= n; i++) //从第二位开始遍历
    {
        if (arr[i] < arr[i - 1]) //当前位小于前一位证明需要进行插入排序
        {
            arr[0] = arr[i]; //将哨兵放在第0位
            int j;
            for (j = i; arr[0] < arr[j - 1]; j--)
                arr[j] = arr[j - 1];
            arr[j] = arr[0];
        } //if
        Show(arr, n);
    } // for i
}

int main()
{
    int n;
    cin >> n;
    int *arr = new int[n + 1]; //第0位用于放哨兵
    for (int i = 1; i <= n; i++)
        cin >> arr[i];

    //Show(arr, n);
    Sort(arr, n);

    delete[] arr;
    return 0;
}

/*
样例输入:
7 34 23 677 2 1 453 3

样例输出:
23 34 677 2 1 453 3
23 34 677 2 1 453 3
2 23 34 677 1 453 3
1 2 23 34 677 453 3
1 2 23 34 453 677 3
1 2 3 23 34 453 677
*/
1.1.2折半插入排序

利用了插入排序前半段序列有序的特点,使用折半查找进行插入

#include <iostream>
using namespace std;

void Show(int arr[], int n)
{
    for (int i = 1; i <= n; i++)
    {
        cout << arr[i];
        if (i < n)
            cout << ' ';
    }
    cout << endl;
}
void Sort(int arr[], int n)
{
    for (int i = 2; i <= n; i++) //从第二位开始遍历
    {
        if (arr[i] < arr[i - 1]) //当前位小于前一位证明需要进行插入排序
        {
            arr[0] = arr[i]; //将哨兵放在第0位

            int low = 1, high = i - 1;
            while (low <= high)
            {
                int mid = (low + high) / 2;
                if (arr[0] < arr[mid])
                    high = mid - 1;
                else
                    low = mid + 1;
            }
            //此时low=high+1
            for (int j = i - 1; j >= high + 1; j--)
                arr[j + 1] = arr[j];
            //arr[high + 1] = arr[0];
            arr[low] = arr[0];
        } //if
        Show(arr, n);
    } // for i
}

int main()
{
    int n;
    cin >> n;
    int *arr = new int[n + 1]; //第0位用于放哨兵
    for (int i = 1; i <= n; i++)
        cin >> arr[i];

    //Show(arr, n);
    Sort(arr, n);

    delete[] arr;
    return 0;
}

/*
样例输入:
7 34 23 677 2 1 453 3

样例输出:
23 34 677 2 1 453 3
23 34 677 2 1 453 3
2 23 34 677 1 453 3
1 2 23 34 677 453 3
1 2 23 34 453 677 3
1 2 3 23 34 453 677
*/
1.1.3希尔排序

给出一个数据序列,使用希尔排序算法进行降序排序。
间隔gap使用序列长度循环除2直到1

#include <iostream>
using namespace std;

void Show(int arr[], int n)
{
    for (int i = 1; i <= n; i++)
    {
        cout << arr[i];
        if (i < n)
            cout << ' ';
    }
    cout << endl;
}
void Sort(int arr[], int n)
{
    for (int gap = n / 2; gap >= 1; gap /= 2)
    {
        for (int i = gap + 1; i <= n; i++)
        {
            arr[0] = arr[i]; //放置进行需要插入的值
            int j = i;
            while (j - gap > 0)
            {
                if (arr[j - gap] < arr[0])
                    arr[j] = arr[j - gap];
                else
                    break;
                j -= gap;
            }
            arr[j] = arr[0];
        } //for i
        Show(arr, n);
    } // for gap
}

int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        int n;
        cin >> n;
        int *arr = new int[n + 1]; //第0位用于放置需要插入的值
        for (int i = 1; i <= n; i++)
            cin >> arr[i];

        //Show(arr, n);
        Sort(arr, n);

        delete[] arr;
    }
    return 0;
}

/*
样例输入:
2
6
111 22 6 444 333 55
8
77 555 33 1 444 77 666 2222

样例输出:
444 333 55 111 22 6
444 333 111 55 22 6

444 555 666 2222 77 77 33 1
666 2222 444 555 77 77 33 1
2222 666 555 444 77 77 33 1
*/

1.2交换排序

1.2.1冒泡排序

下面的代码目的是输出冒泡排序的次数

#include <iostream>
using namespace std;

int Sort(int arr[], int n)
{
    int cnt = 0;
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 0; j < n - i - 1; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                swap(arr[j], arr[j + 1]);
                cnt++;
            } // if
        }     //for j
    }         //for i
    return cnt;
}

int main(int argc, char const *argv[])
{
    int n;
    while (cin >> n)
    {
        int *arr = new int[n];
        for (int i = 0; i < n; i++)
            cin >> arr[i];

        cout << Sort(arr, n) << endl;
        delete[] arr;
    }

    return 0;
}
1.2.2快速排序

下文快速排序代码还有优化的空间,比如说小数组可以改为插入排序,尾递归减少递归次数等。

#include <iostream>
using namespace std;

void PrintArray(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << ' ';
    cout << endl;
}
//将数组切开,返回枢轴量的位置
int Partition(int arr[], int low, int high)
{
    int pivot = arr[low];
    while (low < high)
    {
        //原算法思想是进行枢轴量与其他值交换,但经过分析后可以使用赋值操作优化算法
        //先移动high,从后往前找到比数轴量小的数,然后将小的值赋值到low的位置
        while (low < high && arr[high] >= pivot)
            high--;
        arr[low] = arr[high]; //将小的值赋值到前面
        //再移动low,从前往后找到比数轴量大的数,然后将大的值赋值到high的位置
        while (low < high && arr[low] <= pivot)
            low++;
        arr[high] = arr[low]; //将大的值赋值到前面
    }
    arr[low] = pivot;
    return low;
}
void QuickSort(int arr[], int low, int high, int n)
{
    if (low >= high)
        return;

    int pivot = Partition(arr, low, high);
    PrintArray(arr, n);
    QuickSort(arr, low, pivot - 1, n);
    QuickSort(arr, pivot + 1, high, n); //此处可以使用尾递归优化
}

int main(int argc, char const *argv[])
{
    int t;
    cin >> t;
    while (t--)
    {
        int n;
        cin >> n;
        int *arr = new int[n];
        for (int i = 0; i < n; i++)
            cin >> arr[i];

        QuickSort(arr, 0, n - 1, n);
        cout << endl;

        delete[] arr;
    }

    return 0;
}

/*
样例输入:
2
6
111 22 6 444 333 55
8
77 555 33 1 444 77 666 2222

样例输出:
55 22 6 111 333 444 
6 22 55 111 333 444 
6 22 55 111 333 444 
6 22 55 111 333 444 

1 33 77 555 444 77 666 2222 
1 33 77 555 444 77 666 2222 
1 33 77 77 444 555 666 2222 
1 33 77 77 444 555 666 2222 
1 33 77 77 444 555 666 2222 
*/

1.3选择排序

1.3.1简单选择排序
1.3.2堆排序

还有堆的插入没有写,堆的插入的主要思想就是向上调整树。

#include <iostream >
using namespace std;

void PrintArray(int arr[], int n)
{
    cout << n << ' ';
    for (int i = 1; i <= n; i++)
        cout << arr[i] << ' ';
    cout << endl;
}
void AdjustDown(int arr[], int n, int parent)
{
    arr[0] = arr[parent]; //0位置存放需要调整的结点
    for (int i = 2 * parent; i <= n; i *= 2)
    {
        if (i < n && arr[i] > arr[i + 1]) //判断左右孩子大小,取小的那个与双亲比较
            i++;

        if (arr[0] <= arr[i]) //如果双亲小于孩子,则不需要调整
            break;
        else //如果双亲比孩子大,将孩子赋值给双亲,然后继续向下寻找
        {
            arr[parent] = arr[i];
            parent = i;
        }
    }
    arr[parent] = arr[0]; //最后将原双亲赋值给最后的位置,完成交换
}
void BuildMinHeap(int arr[], int n) //建立小顶堆
{
    //默认叶子节点都是符合小顶堆,所以从中间开始调整
    for (int i = n / 2; i > 0; i--)
        AdjustDown(arr, n, i);
}
void HeapSort(int arr[], int n)
{
    BuildMinHeap(arr, n);
    for (int i = n; i > 1; i--)
    {
        PrintArray(arr, n);
        //将顶部的结点换到树的最末尾,再对树从1开始进行调整
        swap(arr[i], arr[1]);
        AdjustDown(arr, i - 1, 1);
    }
}

int main(int argc, char const *argv[])
{
    int n;
    cin >> n;
    int *arr = new int[n + 1];
    for (int i = 1; i <= n; i++)
        cin >> arr[i];

    HeapSort(arr, n);
    PrintArray(arr, n);

    delete[] arr;
    return 0;
}

/*
样例输入:
8 34 23 677 2 1 453 3 7

样例输出:
8 1 2 3 7 23 453 677 34 
8 2 7 3 34 23 453 677 1 
8 3 7 453 34 23 677 2 1 
8 7 23 453 34 677 3 2 1 
8 23 34 453 677 7 3 2 1 
8 34 677 453 23 7 3 2 1 
8 453 677 34 23 7 3 2 1 
8 677 453 34 23 7 3 2 1 
*/

1.4归并排序

1.4.1’2’-路归并排序

下面展示递归和迭代两种写法,不同的写法进行排序时候的顺序会有一定差异。

#include <iostream>
using namespace std;

int n; //数组长度

void PrintArray(string arr[])
{
    for (int i = 1; i <= n; i++)
        cout << arr[i] << ' ';
    cout << endl;
}
void Merge(string arr[], int low, int mid, int high)
{
    string *temp = new string[n + 1];
    int i, j, k;
    for (i = low; i <= high; i++) //现将传入的数组赋值给辅助数组
        temp[i] = arr[i];
    //i指向前一个数组的元素,j指向后一个数组的元素,k指向原数组的元素
    for (i = low, j = mid + 1, k = i; i <= mid && j <= high; k++)
    {
        //比较前后两个数组对应的元素,将大的放入原数组
        if (temp[i] > temp[j])
            arr[k] = temp[i++];
        else
            arr[k] = temp[j++];
    }
    while (i <= mid) //如果前一个数组还未完全存入
        arr[k++] = temp[i++];
    while (j <= high) //如果后一个数组还未完全存入
        arr[k++] = temp[j++];

    delete[] temp;
}
void MergeSort(string arr[]) //迭代法
{
    for (int step = 1; step < n; step *= 2) //比较的步长
    {
        //low放第一个数组的第一个元素的位置,mid放第一个数组最后一个元素的位置
        //high放第二个数组的最后一个元素的位置
        int low, mid, high;
        for (low = 1; low + step <= n; low = high + 1)
        {
            mid = low + step - 1;
            high = mid + step;

            if (high > n)
                high = n;

            Merge(arr, low, mid, high);
        } //不断取出符合步长的两个数组进行合并
        PrintArray(arr);
    } //不断增加步长
}
void MergeSort(string arr[], int low, int high) //递归法
{
    if (low >= high)
        return;

    int mid = (low + high) / 2;
    MergeSort(arr, low, mid);
    MergeSort(arr, mid + 1, high);
    Merge(arr, low, mid, high);
    PrintArray(arr);
}

int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        cin >> n;
        string *arr = new string[n + 1];
        for (int i = 1; i <= n; i++)
            cin >> arr[i];

        MergeSort(arr); //调用迭代法
        //MergeSort(arr, 1, n); //调用递归法
        cout << endl;

        delete[] arr;
    }

    return 0;
}

/*
样例输入:
2
6 shenzhen beijing guangzhou futian nanshan baoan
10 apple pear peach grape cherry dew fig haw lemon marc

样例输出(迭代):
shenzhen beijing guangzhou futian nanshan baoan 
shenzhen guangzhou futian beijing nanshan baoan 
shenzhen nanshan guangzhou futian beijing baoan 

pear apple peach grape dew cherry haw fig marc lemon 
pear peach grape apple haw fig dew cherry marc lemon 
pear peach haw grape fig dew cherry apple marc lemon 
pear peach marc lemon haw grape fig dew cherry apple 

-------------------------------------------------------
样例输出(递归):
shenzhen beijing guangzhou futian nanshan baoan 
shenzhen guangzhou beijing futian nanshan baoan 
shenzhen guangzhou beijing nanshan futian baoan 
shenzhen guangzhou beijing nanshan futian baoan 
shenzhen nanshan guangzhou futian beijing baoan 

pear apple peach grape cherry dew fig haw lemon marc 
pear peach apple grape cherry dew fig haw lemon marc 
pear peach apple grape cherry dew fig haw lemon marc 
pear peach grape cherry apple dew fig haw lemon marc 
pear peach grape cherry apple fig dew haw lemon marc 
pear peach grape cherry apple haw fig dew lemon marc 
pear peach grape cherry apple haw fig dew marc lemon 
pear peach grape cherry apple marc lemon haw fig dew 
pear peach marc lemon haw grape fig dew cherry apple 

*/

1.5基数排序

#include <iostream>
#include <queue>
using namespace std;

void PrintArray(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        cout << arr[i] << ' ';
    cout << endl;
}
void PrintQueue(queue<int> q)
{
    if (q.empty())
    {
        cout << "NULL" << endl;
        return;
    }

    while (!q.empty())
    {
        cout << "->" << q.front();
        q.pop();
    }
    cout << "->^" << endl;
}
void Sort(int arr[], int n)
{
    queue<int> q[10];

    for (int t = 1; t <= 5; t++)
    {
        for (int i = 0; i < n; i++)
        {
            int wei = 10;
            for (int j = 1; j < t; j++)
                wei *= 10;
            int num = arr[i] % wei / (wei / 10);
            q[num].push(arr[i]);
        }
        if (q[0].size() == n)
            return;

        for (int i = 0; i < 10; i++)
        {
            cout << i << ':';
            PrintQueue(q[i]);
        }

        for (int i = 0, j = 0; i < n; i++)
        {
            while (q[j].empty())
            {
                j++;
            }
            arr[i] = q[j].front();
            q[j].pop();
        }
        PrintArray(arr, n);
    }
}

int main(int argc, char const *argv[])
{
    int t;
    cin >> t;
    while (t--)
    {
        int n;
        cin >> n;
        int *arr = new int[n];
        for (int i = 0; i < n; i++)
            cin >> arr[i];

        Sort(arr, n);
        cout << endl;

        delete[] arr;
    }
    return 0;
}

/*
样例输入:
2
10 278 109 63 930 589 184 505 269 8 83
6 57 0 93 19 18 99

样例输出:
0:->930->^
1:NULL
2:NULL
3:->63->83->^
4:->184->^
5:->505->^
6:NULL
7:NULL
8:->278->8->^
9:->109->589->269->^
930 63 83 184 505 278 8 109 589 269 
0:->505->8->109->^
1:NULL
2:NULL
3:->930->^
4:NULL
5:NULL
6:->63->269->^
7:->278->^
8:->83->184->589->^
9:NULL
505 8 109 930 63 269 278 83 184 589
0:->8->63->83->^
1:->109->184->^
2:->269->278->^
3:NULL
4:NULL
5:->505->589->^
6:NULL
7:NULL
8:NULL
9:->930->^
8 63 83 109 184 269 278 505 589 930

0:->0->^
1:NULL
2:NULL
3:->93->^
4:NULL
5:NULL
6:NULL
7:->57->^
8:->18->^
9:->19->99->^
0 93 57 18 19 99
0:->0->^
1:->18->19->^
2:NULL
3:NULL
4:NULL
5:->57->^
6:NULL
7:NULL
8:NULL
9:->93->99->^
0 18 19 57 93 99

*/

2.外部排序

暂不更新

23王道数据结构代码题全解(四) 此次更新链表(17/25),计划更新23王道数据结构所有课后代码习题的实现,虽然考试写的一般都是伪代码,但是强迫症的我还是全部实现了一遍,都可以编译运行,包含暴力解和最优解,仓库在这里 https://github.com/mancuoj/wangdao 阅读详情

相关推荐

数据结构面试题总结

还记得第一次学数据结构的艰难,也记得学完以后写代码思路的开阔。所以它很难,但是又很重要,数据结构应该是面试中必考,并且是重点考核的科目。最近复习了一下数据结构,在网上找了一些典型的面试题,因为答案很零散所以想整理一下,顺便帮助一下在复习数据结构的同学们。 整理大概分为数组、链表、二叉树、图、查找、排序几个部分,每个部分的内容分为多个文章写,此文章会更新链接。代码使用c/c++, 环境VS2010

B_Allen的专栏 1323

排序算法(一)——插入排序【C/C++】

排序算法(一)——插入排序【C/C++】

bblb的博客 5187

数据结构之快速排序图文详解及代码(C++实现)

代码: #include<iostream> using namespace std; #define MAXSIZE 20//顺序表的最大长度 typedef int KeyType;//定义关键字类型为整型 typedef int InfoType; typedef struct { KeyType key;//关键字项 InfoType otherinfo;/...

qq_40159978的博客 1891

C/C++数据结构-完整代码-插入排序代码实现

原理 代码实现 #include <stdio.h> #include <string.h> #include <stdlib.h> //从小到大排序 void insertSort(int arr[],int len){ for(int i = 0; i < len;i++){ if(arr[i] < arr[i-1] ){ //判断当前元素是否比前一个大(如果满足条件将当前元素报错将当前元素前面的元素向后移动)

程序员猫爪 456

从零到一:Ollama工具在RK3588上的深度优化实践

本文详细介绍了如何在RK3588开发板上深度优化Ollama工具,以高效运行DeepSeek模型。通过CPU与NPU负载平衡、模型量化、温度控制等策略,显著提升性能并降低功耗,适用于边缘计算场景。文章提供了具体的配置命令和优化方案,帮助开发者充分发挥RK3588的硬件潜力。

rgv23456789的博客 310

卡尔曼滤波、互补滤波与Tsinghua滤波:平衡车姿态感知的三大算法对比

本文对比了平衡车姿态感知中的卡尔曼滤波、互补滤波与Tsinghua滤波三大核心算法。互补滤波计算简单,适合入门;卡尔曼滤波理论最优但实现复杂;Tsinghua滤波则是一种面向嵌入式优化的轻量级方案,通过动态权重调整和零偏估计,在资源受限的MCU上实现了性能与效率的平衡,是智能车竞赛等场景的实用选择。

weixin_29232121的博客 349

C++ sort()排序详解

本文对C++中的sort()做了一个比较详细的说明,包括为什么选择使用sort()、sort()函数的实现原理、sort()的使用方法等等。

晴空๓ 59万+

DSP28335学习笔记——McBSP配置为SPI

由于28335硬件外设上只有一个SPI接口,所以当SPI接口不够用时,可以将McBSP配置为SPI接口。 参考28335的数据手册,当DSP为主机时,配置McBSP为SPI所用到的接线如下图所示。 另外总结一些调试过程中的经验。 1.传输数据位数的确定 由RCR1寄存器中的RWDLEN1和XCR1寄存器中的XWDLEN1决定。分别对应着接受和发送的位数,在配置成SPI模式的时候,这

捕虫少年 1万+

王道考研数据结构课后题代码题(2026版)——排序部分

以王道考研《数据结构》辅导书(2026版)课后习题代码题部分为参考依据,给出课后习题代码题的可执行代码的实现,本合集使用编程语言以C/C++语言为主

ppqq980532的博客 1659

vmware虚拟机网络连接问题

主机:ubuntu14.04 Vitual Network Editor

入门虽易,精通不易,且学且珍惜! 1353

第18章:Ingestion Pipeline 数据摄取流水线

本文介绍了LlamaIndex的IngestionPipeline如何解决合同文档处理中的四大核心问题:不可重复、无追溯、无容错和无法缓存。通过标准化数据处理流程,将手工操作升级为工厂流水线模式,实现数据的可复用、可追踪和高效处理。文章详细阐述了Pipeline的设计原理,包括Transformation的串行编排、缓存机制(基于输入和Transformation的哈希值)以及数据血缘追踪(通过Node的metadata记录处理过程)。

davidwang456的专栏 62

【C++】查找和排序

查找和排序的介绍

mhyasadj的博客 453

OceanBase备租户创建(二):通过BACKUP DATABASE PLUS ARCHIVELOG

OceanBase数据库备租户创建方法二:通过BACKUP DATABASE PLUS ARCHIVELOG功能实现,特别适用于社区版和单机版部署模式。

Sebastien23的博客 538

第八章 排序—归并排序

第八章 排序—归并排序 数据结构基础代码 (严蔚敏 人邮教育出版社) 2-路归并排序 #include <stdio.h> #include <iostream> using namespace std; //归并排序 //2—路归并排序 void Merge (int A[],int B[],int low,int mid,int high) { int i,j,...

weixin_42976216的博客 193

面向干净核心的并行扩展:SAP BTP 上的 side-by-side extensions 全面解读

摘要: SAP的side-by-side extensions是一种与核心系统解耦的云原生扩展模式,通过API和事件驱动实现与SAP S/4HANA等核心系统的松耦合集成。该模式支持独立升级、弹性扩展和高效创新,是SAP官方推荐的clean core关键实现路径。其典型架构包括接口层(OData/REST API、事件通道)、运行层(Cloud Foundry/Kyma/CAP框架)和体验层(Fiori/UI5)。适用场景包括需快速迭代、复用云服务或服务外部用户的业务扩展。实施时需关注安全治理(如XSUAA

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 304

【论文复现】——基于LM优化的NDT点云配准算法

传统的正态分布变换配准算法处理初始位姿变换相差较大的两帧点云时,存在无法收敛或者陷入局部最小值的问题。为了提高算法的收敛性能,提出了一种基于LM方法改进的三维正态分布变换配准算法。

点云侠的博客 1163

6-7 数据结构考题 - 快速排序 - 划分函数

6-7 数据结构考题 - 快速排序 - 划分函数 (25 分) 用顺序表作存储结构,输入一组数据,用快速排序法对其进行排序。 顺序表的类型描述: #define MAXSIZE 50 // MAXSIZE为最大数据元素数目 typedef int ElemType; typedef struct { ElemType r[MAXSIZE +1]; // r[0]闲置或另作它用 int length; }SqList; 函数接口定义: 下面给出了 快速排序 - 划分函数 的大部分

国家一级致癌物 2124

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

数据结构与算法——C++版

数据结构与算法——C++版 去发现同类优质开源项目:https://gitcode.com/ 简介 本仓库提供了《数据结构与算法——C++语言描述》原书第三版的中文电子书资源。本书由Mark Allen Weiss所著,是计算机科学领域经典教材之一,深入浅出地介绍了数据结构与算法的基本概念和应用。 本书特点如下: 系统介绍了各种常见的数据结构,如数组、链表、堆、栈、队列、散列表、二叉树、图等。 ...

gitblog_06706的博客 297

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

六大排序实现

任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。在剩余的array[i]–array[n-2](array[i+1]–array[n-1])集合中,重复上述步骤,直到集合剩余1个元素。序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。

m0_69258343的博客 729

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C语言实现的简单选择排序算法

选择排序是一种简单而直观的排序算法,它的基本原理是每次从未排序的部分中选出最小(或最大)元素,并将其放到已排序部分的末尾。虽然选择排序的时间复杂度为O(n²),它在实际应用中因为简单易实现、代码清晰而常被使用。本文将介绍一段使用C++实现的简单选择排序程序。首先,我们定义了存储元素的结构 ElemType 包含一个关键字 key 和一个指向其他信息的指针 otherinfo(在该例中未使用)。另外,还定义了顺序表结构 SqList,它包含一个指向 ElemType 的动态数组和一个用于表示表长度的变量。

2401_85008555的博客 775

C++:插入排序

【代码】C++:插入排序。

qq_28414091的博客 146

c++ 常用排序

冒泡排序(Bubble Sort): 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 int main() { int array[10] = {...

weixin_30678821的博客 75

SCAU期末笔记 - 数据结构(STL版)

华南农业大学校OJ数据结构课后习题题解

swan416的博客 3328

算法导论第四版ch6堆排序中文笔记与最大堆的c++实现

作者:Claude Du本文文字内容和图片基本来源于算法导论第四版第6章。堆排序的时间复杂度与并归排序一样, 空间复杂度与插入排序同样有空间原址性。堆排序是集合了并归排序与插入排序两者优点的一种排序算法,其使用了称为“堆”的数据结构,该数据结构不仅可以用于堆排序,还可以构造有效的优先队列。

Yunhandu的博客 1411

C++的STL容器类详解

STL(Standard Template Library)是C++标准库中的一个重要组成部分,它提供了一组通用的模板类和函数,用于实现常用的数据结构和算法。(Containers):STL提供了多种容器类,如向量(vector)、链表(list)、双向链表(deque)、集合(set)、映射(map)等。总而言之,STL是C++开发中非常重要的工具之一,它提供了高效的数据结构和算法,能够提高程序的性能、减少开发时间,并提高代码的重用性和可维护性。这样可以大大提高代码的重用性,减少了开发时间和维护成本。

Jinyizhi2233的博客 4571

[算法]-归并排序

归并排序的思想就是分治法,将数组一直平分,直至最后平分的那部分只有两个元素时候进行比较排序,然后将这个排好序的数组(2个元素)和当时另外一边被平分的数组(2个元素)继续进行比较排序,整合成一个新的数组(4个元素),…直至最终将两个有序的数组进行比较排序最后整合出结果 附上(数据结构c++)书上实例图 代码如下: #include&lt;bits/stdc++.h&gt; using namesp...

隔壁老王三金的博客 220
上一篇: C++数据结构的一些代码(线性表与串部分)
下一篇: C++数据结构的一些代码(查找部分)
in_void
博客等级 码龄7年 31粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值