数据结构课程设计(八)---排序算法比较 [排序]

news2024/11/27 1:19:30
1.8.1 题目内容
1.8.1-A [问题描述]

  利用随机函数产生10个样本,每个样本有50000个随机整数(并使第一个样本是正序,第二个样本是逆序),利用直接插入排序、希尔排序,冒泡排序、快速排序、选择排序、堆排序,归并排序、基数排序8种排序方法进行排序(结果为由小到大的顺序),并统计每一种排序算法对不同样本所耗费的时间。

1.8.1-B [基本要求]

(1) 原始数据存在文件中,用相同样本对不同算法进行测试;

(2) 屏幕显示每种排序算法对不同样本所花的时间;

1.8.2 算法思想

八大排序方式的思想。设置控制台字体的颜色以增加可读性,再例如Sleep_cls(time)函数,负责延迟time ms后清空屏幕,以达到动态刷新的效果。

1.8.3 数据结构

由于排序方式很多,没有特定的结构体。

1.8.4 源程序 [751行]
#include <iostream>
#include <fstream>
#include <vector>
#include <ctime>
#include <sstream>
#include <algorithm>
#include <chrono>
#include <stack>
#include <windows.h>

using namespace std;
using namespace std::chrono;

// 直接插入排序
void insertionSort(vector<int>& arr) 
{
    int n = arr.size();
    for (int i = 1; i < n; ++i) 
	{
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key) 
		{
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}

// 希尔排序
void shellSort(vector<int>& arr) 
{
    int n = arr.size();
    for (int gap = n / 2; gap > 0; gap /= 2) 
	{
        for (int i = gap; i < n; ++i) 
		{
            int temp = arr[i];
            int j;
            for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) 
			{
                arr[j] = arr[j - gap];
            }
            arr[j] = temp;
        }
    }
}

// 冒泡排序
void bubbleSort(vector<int>& arr) 
{
    int n = arr.size();
    bool swapped;
    for (int i = 0; i < n - 1; ++i) 
	{
        swapped = false;
        for (int j = 0; j < n - i - 1; ++j) 
		{
            if (arr[j] > arr[j + 1]) 
			{
                swap(arr[j], arr[j + 1]);
                swapped = true;
            }
        }
        if (!swapped) 
		{
            break;
        }
    }
}

// 快速排序辅助函数 
int partition(vector<int>& arr, int low, int high) 
{
    int pivot = arr[high];
    int i = low - 1;
    for (int j = low; j <= high - 1; ++j) 
	{
        if (arr[j] <= pivot) 
		{
            i++;
            swap(arr[i], arr[j]);
        }
    }
    swap(arr[i + 1], arr[high]);
    return i + 1;
}

//快速排序
void quickSort(vector<int>& arr, int low, int high) 
{
    stack<pair<int, int>> stk;
    stk.push({low, high});

    while (!stk.empty()) 
	{
        pair<int, int> top = stk.top();
        int start = top.first;
        int end = top.second;

        stk.pop();

        if (start < end) 
		{
            int pivot = partition(arr, start, end);
            stk.push({start, pivot - 1});
            stk.push({pivot + 1, end});
        }
    }
}

// 选择排序
void selectionSort(vector<int>& arr) 
{
    int n = arr.size();
    for (int i = 0; i < n - 1; ++i) 
	{
        int minIndex = i;
        for (int j = i + 1; j < n; ++j) 
		{
            if (arr[j] < arr[minIndex]) 
			{
                minIndex = j;
            }
        }
        swap(arr[i], arr[minIndex]);
    }
}

// 堆排序辅助函数 
void heapify(vector<int>& arr, int n, int i) 
{
    int largest = i;
    int left = 2 * i + 1;
    int right = 2 * i + 2;
    if (left < n && arr[left] > arr[largest]) 
	{
        largest = left;
    }
    if (right < n && arr[right] > arr[largest]) 
	{
        largest = right;
    }
    if (largest != i) 
	{
        swap(arr[i], arr[largest]);
        heapify(arr, n, largest);
    }
}

//堆排序 
void heapSort(vector<int>& arr) 
{
    int n = arr.size();
    for (int i = n / 2 - 1; i >= 0; --i) 
	{
        heapify(arr, n, i);
    }
    for (int i = n - 1; i > 0; --i) 
	{
        swap(arr[0], arr[i]);
        heapify(arr, i, 0);
    }
}

// 归并排序辅助函数 
void merge(vector<int>& arr, int left, int mid, int right) 
{
    int n1 = mid - left + 1;
    int n2 = right - mid;
    vector<int> L(n1), R(n2);
    for (int i = 0; i < n1; ++i) 
	{
        L[i] = arr[left + i];
    }
    for (int j = 0; j < n2; ++j) 
	{
        R[j] = arr[mid + 1 + j];
    }
    int i = 0, j = 0, k = left;
    while (i < n1 && j < n2) 
	{
        if (L[i] <= R[j]) 
		{
            arr[k++] = L[i++];
        } else {
            arr[k++] = R[j++];
        }
    }
    while (i < n1) 
	{
        arr[k++] = L[i++];
    }
    while (j < n2) 
	{
        arr[k++] = R[j++];
    }
}

//归并排序 
void mergeSort(vector<int>& arr, int left, int right) 
{
    if (left < right) 
	{
        int mid = left + (right - left) / 2;
        mergeSort(arr, left, mid);
        mergeSort(arr, mid + 1, right);
        merge(arr, left, mid, right);
    }
}

// 基数排序辅助函数 
int getMax(vector<int>& arr) 
{
    int maxNum = arr[0];
    int n = arr.size();
    for (int i = 1; i < n; ++i) 
	{
        if (arr[i] > maxNum) 
		{
            maxNum = arr[i];
        }
    }
    return maxNum;
}

//基数排序辅助函数 
void countSort(vector<int>& arr, int exp) 
{
    int n = arr.size();
    vector<int> output(n);
    vector<int> count(10, 0);
    for (int i = 0; i < n; ++i) 
	{
        count[(arr[i] / exp) % 10]++;
    }
    for (int i = 1; i < 10; ++i) 
	{
        count[i] += count[i - 1];
    }
    for (int i = n - 1; i >= 0; --i) 
	{
        output[count[(arr[i] / exp) % 10] - 1] = arr[i];
        count[(arr[i] / exp) % 10]--;
    }
    for (int i = 0; i < n; ++i) 
	{
        arr[i] = output[i];
    }
}

//调节字体颜色 
void Set_Color(int x)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
	//此函数可控制字体颜色,颜色对应列表如下所示
	/*
	color(0);
	printf(“黑色\n”);
	color(1);
	printf(“蓝色\n”);
	color(2);
	printf(“绿色\n”);
	color(3);
	printf(“湖蓝色\n”);
	color(4);
	printf(“红色\n”);
	color(5);
	printf(“紫色\n”);
	color(6);
	printf(“黄色\n”);
	color(7);
	printf(“白色\n”);
	color(8);
	printf(“灰色\n”);
	color(9);
	printf(“淡蓝色\n”);
	color(10);
	printf(“淡绿色\n”);
	color(11);
	printf(“淡浅绿色\n”);
	color(12);
	printf(“淡红色\n”);
	color(13);
	printf(“淡紫色\n”);
	color(14);
	printf(“淡黄色\n”);
	color(15);
	printf(“亮白色\n”);
	在0-15范围修改的是字体的颜色超过15改变的是文本背景色
	*/
}

//清空屏幕 
void Sleep_Cls(int time)
{
	Sleep(time);
	system("cls");
	//延迟 time ms后清空屏幕
}

//基数排序 
void radixSort(vector<int>& arr) 
{
    int maxNum = getMax(arr);
    for (int exp = 1; maxNum / exp > 0; exp *= 10) 
	{
        countSort(arr, exp);
    }
}

int main() 
{
    srand(time(NULL));
    Set_Color(11);
	cout << "正在进入排序算法比较系统!" << endl;
	Set_Color(7);
	cout << "一秒后开始生成随机数,并存入samples.txt备用..." << endl;
	Sleep(1000);
	// 生成样本数据并保存到文件中
    ofstream file("samples.txt");
    if (!file) 
	{
        cout << "无法打开文件!" << endl;
        return 1;
    }
    for (int i = 0; i < 10; ++i) 
	{
        vector<int> sample(50000);
        for (int j = 0; j < 50000; ++j) 
		{
            sample[j] = rand();
        }
        if (i == 0) 
		{
			Set_Color(6);
            cout << "正在产生第1套数据:正序样本..." << endl;
	        Sleep(300);
			Set_Color(7);
			Set_Color(11);
            sort(sample.begin(), sample.end());
            Sleep(300);
            cout << "第1套数据存储成功!" << endl;
            cout<<endl; 
        } 
		else if (i == 1) 
		{
			Set_Color(6);
            cout << "正在产生第2套数据:逆序样本..." << endl;
	        Sleep(300);
			Set_Color(7);
			Set_Color(11);
            sort(sample.begin(), sample.end());
            Sleep(300);
            cout << "第2套数据存储成功!" << endl;
            cout<<endl; 
            sort(sample.begin(), sample.end(), greater<int>());
        }
        else
		{
			Set_Color(6);
            cout << "正在产生第"<<i+1<<"套数据:随机样本..." << endl;
	        Sleep(300);
			Set_Color(7);
			Set_Color(11);
            sort(sample.begin(), sample.end());
            Sleep(300);
            cout << "第"<<i<<"套数据存储成功!" << endl;
            cout<<endl; 
            sort(sample.begin(), sample.end(), greater<int>());
		 } 
        for (int j = 0; j < 50000; ++j) 
		{
            file << sample[j] << " ";
        }
        file << endl;
    }
    cout << "十套随机数样本已经保存完毕,一秒后开始排序。" << endl;
    file.close();
    Sleep_Cls(1000);

    // 从文件中读取样本数据并进行排序,并统计时间
    ifstream inputFile("samples.txt");
    if (!inputFile) 
	{
        cout << "无法打开文件!" << endl;
        return 1;
    }

    string line;
    int sampleIndex = 1;
    while (getline(inputFile, line)) 
	{
        vector<int> arr;
        int num;
        istringstream iss(line);
        while (iss >> num) 
		{
            arr.push_back(num);
        }
        Set_Color(15);
        cout << "样本 " << sampleIndex++ << ":" << endl;

        // 直接插入排序
        vector<int> arr_insertion(arr);
        auto start = high_resolution_clock::now();
        insertionSort(arr_insertion);
        auto end = high_resolution_clock::now();
        duration<double, milli> duration_insertion = end - start;
        
        if (duration_insertion.count()> 4000)
		{
			Set_Color(4);
			cout << "直接插入排序时间: " << duration_insertion.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_insertion.count()> 2500&&duration_insertion.count()<=4000)
		{
			Set_Color(6);
			cout << "直接插入排序时间: " << duration_insertion.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_insertion.count() > 500&&duration_insertion.count()<=2500)
		{
			Set_Color(14);
			cout << "直接插入排序时间: " << duration_insertion.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_insertion.count()> 20&&duration_insertion.count()<=500)
		{
			Set_Color(3);
			cout << "直接插入排序时间: " << duration_insertion.count() << " ms" << endl;
			Set_Color(7);
		}
		else
		{
			Set_Color(11);
			cout << "直接插入排序时间: " << duration_insertion.count() << " ms" << endl;
			Set_Color(7);
		}
		Set_Color(7);

        // 希尔排序
        vector<int> arr_shell(arr);
        start = high_resolution_clock::now();
        shellSort(arr_shell);
        end = high_resolution_clock::now();
        duration<double, milli> duration_shell = end - start;
        if (duration_shell.count()> 4000)
		{
			Set_Color(4);
		    cout << "希尔排序时间: " << duration_shell.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_shell.count()> 2500&&duration_shell.count()<=4000)
		{
			Set_Color(6);
			cout << "希尔排序时间: " << duration_shell.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_shell.count() > 500&&duration_shell.count()<=2500)
		{
			Set_Color(14);
			cout << "希尔排序时间: " << duration_shell.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_shell.count()> 20&&duration_shell.count()<=500)
		{
			Set_Color(3);
			cout << "希尔排序时间: " << duration_shell.count() << " ms" << endl;
			Set_Color(7);
		}
		else
		{
			Set_Color(11);
			cout << "希尔排序时间: " << duration_shell.count() << " ms" << endl;
			Set_Color(7);
		}
		Set_Color(7);

        // 冒泡排序
        vector<int> arr_bubble(arr);
        start = high_resolution_clock::now();
        bubbleSort(arr_bubble);
        end = high_resolution_clock::now();
        duration<double, milli> duration_bubble = end - start;
        if (duration_bubble.count()> 4000)
		{
			Set_Color(4);
		    cout << "冒泡排序时间: " << duration_bubble.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_bubble.count()> 2500&&duration_bubble.count()<=4000)
		{
			Set_Color(6);
			cout << "冒泡排序时间: " << duration_bubble.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_bubble.count() > 500&&duration_bubble.count()<=2500)
		{
			Set_Color(14);
			cout << "冒泡排序时间: " << duration_bubble.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_bubble.count()> 20&&duration_bubble.count()<=500)
		{
			Set_Color(3);
			cout << "冒泡排序时间: " << duration_bubble.count() << " ms" << endl;
			Set_Color(7);
		}
		else
		{
			Set_Color(11);
			cout << "冒泡排序时间: " << duration_bubble.count() << " ms" << endl;
			Set_Color(7);
		}
		Set_Color(7);

        // 选择排序
        vector<int> arr_selection(arr);
        start = high_resolution_clock::now();
        selectionSort(arr_selection);
        end = high_resolution_clock::now();
        duration<double, milli> duration_selection = end - start;
        if (duration_selection.count()> 4000)
		{
			Set_Color(4);
		    cout << "选择排序时间: " << duration_selection.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_selection.count()> 2500&&duration_selection.count()<=4000)
		{
			Set_Color(6);
			cout << "选择排序时间: " << duration_selection.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_selection.count() > 500&&duration_selection.count()<=2500)
		{
			Set_Color(14);
			cout << "选择排序时间: " << duration_selection.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_selection.count()> 20&&duration_selection.count()<=500)
		{
			Set_Color(3);
			cout << "选择排序时间: " << duration_selection.count() << " ms" << endl;
			Set_Color(7);
		}
		else
		{
			Set_Color(11);
			cout << "选择排序时间: " << duration_selection.count() << " ms" << endl;
			Set_Color(7);
		}
		Set_Color(7);

        // 堆排序
        vector<int> arr_heap(arr);
        start = high_resolution_clock::now();
        heapSort(arr_heap);
        end = high_resolution_clock::now();
        duration<double, milli> duration_heap = end - start;
        if (duration_heap.count()> 4000)
		{
			Set_Color(4);
		    cout << "堆排序时间: " << duration_heap.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_heap.count()> 2500&&duration_heap.count()<=4000)
		{
			Set_Color(6);
			cout << "堆排序时间: " << duration_heap.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_heap.count() > 500&&duration_heap.count()<=2500)
		{
			Set_Color(14);
			cout << "堆排序时间: " << duration_heap.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_heap.count()> 20&&duration_heap.count()<=500)
		{
			Set_Color(3);
			cout << "堆排序时间: " << duration_heap.count() << " ms" << endl;
			Set_Color(7);
		}
		else
		{
			Set_Color(11);
			cout << "堆排序时间: " << duration_heap.count() << " ms" << endl;
			Set_Color(7);
		}
		Set_Color(7);

        // 归并排序
        vector<int> arr_merge(arr);
        start = high_resolution_clock::now();
        mergeSort(arr_merge, 0, arr_merge.size() - 1);
        end = high_resolution_clock::now();
        duration<double, milli> duration_merge = end - start;
        if (duration_merge.count()> 4000)
		{
			Set_Color(4);
		    cout << "归并排序时间: " << duration_merge.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_merge.count()> 2500&&duration_merge.count()<=4000)
		{
			Set_Color(6);
			cout << "归并排序时间: " << duration_merge.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_merge.count() > 500&&duration_merge.count()<=2500)
		{
			Set_Color(14);
			cout << "归并排序时间: " << duration_merge.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_merge.count()> 20&&duration_merge.count()<=500)
		{
			Set_Color(3);
			cout << "归并排序时间: " << duration_merge.count() << " ms" << endl;
			Set_Color(7);
		}
		else
		{
			Set_Color(11);
			cout << "归并排序时间: " << duration_merge.count() << " ms" << endl;
			Set_Color(7);
		}
		Set_Color(7);

        // 基数排序
        vector<int> arr_radix(arr);
        start = high_resolution_clock::now();
        radixSort(arr_radix);
        end = high_resolution_clock::now();
        duration<double, milli> duration_radix = end - start;
        if (duration_radix.count()> 4000)
		{
			Set_Color(4);
		    cout << "基数排序时间: " << duration_radix.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_radix.count()> 2500&&duration_radix.count()<=4000)
		{
			Set_Color(6);
			cout << "基数排序时间: " << duration_radix.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_radix.count() > 500&&duration_radix.count()<=2500)
		{
			Set_Color(14);
			cout << "基数排序时间: " << duration_radix.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_radix.count()> 20&&duration_radix.count()<=500)
		{
			Set_Color(3);
			cout << "基数排序时间: " << duration_radix.count() << " ms" << endl;
			Set_Color(7);
		}
		else
		{
			Set_Color(11);
			cout << "基数排序时间: " << duration_radix.count() << " ms" << endl;
			Set_Color(7);
		}
		Set_Color(7);
        
         // 快速排序
        vector<int> arr_quick(arr);
        start = high_resolution_clock::now();
        quickSort(arr_quick, 0, arr_quick.size() - 1);
        end = high_resolution_clock::now();
        duration<double, milli> duration_quick = end - start;
        if (duration_quick.count()> 4000)
		{
			Set_Color(4);
		    cout << "快速排序时间: " << duration_quick.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_quick.count()> 2500&&duration_quick.count()<=4000)
		{
			Set_Color(6);
			cout << "快速排序时间: " << duration_quick.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_quick.count() > 500&&duration_quick.count()<=2500)
		{
			Set_Color(14);
			cout << "快速排序时间: " << duration_quick.count() << " ms" << endl;
			Set_Color(7);
		}
		else if (duration_quick.count()> 20&&duration_quick.count()<=500)
		{
			Set_Color(3);
		    cout << "快速排序时间: " << duration_quick.count() << " ms" << endl;
			Set_Color(7);
		}
		else
		{
			Set_Color(11);
			cout << "快速排序时间: " << duration_quick.count() << " ms" << endl;
			Set_Color(7);
		}
		Set_Color(7);
        cout << endl;
    }

    inputFile.close();

    return 0;
}
1.8.5 测试数据与运行结果
1.8.5-A 测试数据

由随机函数产生十个样本,每个样本5000个数据,数据存储在samples.txt中。

1.8.5-B 运行结果

1.8.6 时间复杂度

时间复杂度为程序中已有直观显示。

源码地址:GeekclubC/Course-Design-of-Data-Structure: 用C++完成的数据结构课程设计 (github.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1590781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

搭建Maven的Nexus3私服

搭建Maven的Nexus3私服 1、常见的Maven私服产品 Apache的ArchivaJFrog的ArtifactorySonatype的Nexus&#xff08;[ˈneksəs]&#xff09;&#xff08;当前最流行、使用最广泛&#xff09; 2. windows java8安装和配置私服Nexus3 参考&#xff1a; https://zhuanlan.zhihu…

【INNODB引擎篇】深奥探究Innodb存储引擎

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;mysql专栏&#xff1a;小林同学的专栏 目录 1.InnoDB引擎 1.1 逻辑存储结构 1.2 架构 1.2.1 概述 1.2.2 内存结构 1.2.3 磁盘结构 1.2.4 后台线程 1.3 事务原理 1.3.1 事务基础 1.3.2 redo log 1.…

修改cmd默认编码(win10系统) 亲测有效

win10系统,CMD默认字符编码序号是936,输入"chcp"命令可以看到此编号,右键cmd窗口–属性,同样也可以看到此编号.如下图: 我需要把字符编码序号936变更为65001,即UTF-8编码. 网上搜到的教程主要有两种: 教程一修改注册表的方法:https://learnku.com/articles/55553 测…

Project Euler_Problem 193_Few Repeated Digits_欧拉筛+容斥公式

原题目&#xff1a; 题目大意&#xff1a; 解题思路&#xff1a; 代码&#xff1a; void serch(ll I,ll sum,ll used) {ll i, j, l, x,y;for (i 1; i < I; i) {if (sum * D[i] > N)break;x sum * D[i];y N / x;if (used % 2 0) {ans1 ans1 - y;}else {ans1 ans1 y…

如何将对象转换成json字符串,以json格式输出,并获取到其中的特定字段

小王学习录 Json格式示例 1&#xff1a;简单的 JSON 对象示例 2&#xff1a;JSON 对象嵌套示例 3&#xff1a;JSON 数组示例 4&#xff1a;混合使用对象和数组 使用Gson将java对象转换成json字符串哪些数据类型的对象可以使用Gson转换为json字符串如何使用Gson将java对象转换成…

Meta推出全新定制AI芯片,加速追赶对手的步伐

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Nginx讲解 很详细了!!!

hello&#xff0c;你好鸭&#xff0c;我是Ethan&#xff0c;很高兴你能来阅读&#xff0c;昵称是希望自己能不断精进&#xff0c;向着优秀程序员前行!&#x1f4aa;&#x1f4aa;&#x1f4aa; 目前博客主要更新Java系列、数据库、项目案例、计算机基础等知识点。感谢你的阅读和…

有图片转成PDF文件格式的方法吗?分享图片转成PDF文件的方法

将图片转换为PDF文件是一个相对简单的过程&#xff0c;但也需要一定的步骤和注意事项。下面&#xff0c;我将详细介绍如何将图片转换为PDF文件&#xff0c;包括所需的工具、步骤以及可能遇到的问题和解决方案。 首先&#xff0c;我们需要一个能够将图片转换为PDF文件的工具。市…

C语言进阶课程学习记录-数组指针和指针数组分析

C语言进阶课程学习记录-数组指针和指针数组分析 实验-数组指针的大小实验-指针数组小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课程PPT&#xff0c;仅用于个人学习记录 实验-数组指针的大小 #include <stdio.h>typedef int(AINT…

ABAP-CPI-Odata POST-create_deep_entity 多层嵌套的处理及CPI端的调用

该文章演示怎么在OData里,创建一个多套多的请求结构,传入数据处理后,返回多层级的处理结果;以及如何在CPI里写groovy脚本,去解析它;最后如何用postman模拟外围系统,调用CPI这个接口,从而去调用Odata接口 假如想用SAP Odata去实现传入多层级的数据,进行创建或者根据传入…

【网站项目】摄影竞赛小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【c++】优先级队列|反向迭代器(vector|list)

优先级队列的常用函数的使用 #include<iostream> #include<queue> using namespace std;int main() {priority_queue<int>st;st.push(1);st.push(7);st.push(5);st.push(2);st.push(3);st.push(9);while (!st.empty()){cout << st.top() << &qu…

安达发|APS计划排程系统做出详细生产作业计划需要哪些条件

在制造行业中&#xff0c;APS&#xff08;高级计划排程系统&#xff09;是核心的信息系统之一&#xff0c;它负责制定详细的生产作业计划以确保生产效率和交货期的准确性。要做出有效的详细生产作业计划&#xff0c;需要满足一系列条件要求&#xff0c;以下是一些关键因素&…

FME学习之旅---day24

我们付出一些成本&#xff0c;时间的或者其他&#xff0c;最终总能收获一些什么。 高级地理数据库 教程&#xff1a;地理数据库转换 上述教程包括 如何使用 Esri 模板地理数据库 该内容在FME学习之旅day19 已经学习过 使用地理数据库属性域&#xff1a;编写编码属性域 属…

css里面的浮动笔记

参考链接&#xff1a; (图文详细)最通俗易懂的CSS 浮动float属性详解_css float简单理解-CSDN博客 经验分享&#xff1a;CSS浮动(float,clear)通俗讲解 - 杨元 - 博客园 (cnblogs.com) 要点&#xff1a; 浮动元素只会影响后面标准流的元素 &#xff0c;如果在它之前有一个标…

Harmony鸿蒙南向驱动开发-RTC接口使用

功能简介 RTC&#xff08;real-time clock&#xff09;为操作系统中的实时时钟设备&#xff0c;为操作系统提供精准的实时时间和定时报警功能。当设备下电后&#xff0c;通过外置电池供电&#xff0c;RTC继续记录操作系统时间&#xff1b;设备上电后&#xff0c;RTC提供实时时…

python实战-含容器运用

目录 1.找出10000以内能被5或6整除&#xff0c;但不能被两者同时整除的数 2.写一个方法&#xff0c;计算列表所有偶数下标元素的和(注意返回值) 3.根据完整的路径从路径中分离文件路径、文件名及扩展名 4.根据标点符号对字符串进行分行 5.去掉字符串数组中每个字符串的空格…

基于springboot+vue实现的计算机等级考试报名系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

第七周周一人工智能导论预告

第一讲 人工智能概述 1.1 简介 1.2人工智能的概念 1.3 人工智能的发展简史 1.4 人工智能研究的基本内容 第一讲 人工智能概述单元测试 第二讲 一阶谓词逻辑表示法 2.1 命题逻辑 2.2 谓词逻辑 2.3 一阶谓词逻辑知识表示法 第二讲 一阶谓词逻辑知识表示法单元测试 第…

Docker 学习笔记(六):挑战容器数据卷技术一文通,实战多个 MySQL 数据同步,能懂会用,初学必备

一、前言 记录时间 [2024-4-11] 系列文章简摘&#xff1a; Docker学习笔记&#xff08;二&#xff09;&#xff1a;在Linux中部署Docker&#xff08;Centos7下安装docker、环境配置&#xff0c;以及镜像简单使用&#xff09; Docker 学习笔记&#xff08;三&#xff09;&#x…