网站信息化建设具体内容mysql8.0 wordpress
网站信息化建设具体内容,mysql8.0 wordpress,怎么样做门户网站,排名做网站优化这章讲解了#xff0c;嵌入式当中#xff0c;数据结构得到基本排序和查找算法#xff0c;排序有冒泡排序#xff0c;选择排序#xff0c;插入排序#xff0c;希尔排序#xff0c;快速排序#xff0c;查找算法便是二分查找#xff08;折半查找#xff09;。在嵌入式开…这章讲解了嵌入式当中数据结构得到基本排序和查找算法排序有冒泡排序选择排序插入排序希尔排序快速排序查找算法便是二分查找折半查找。在嵌入式开发中数据是核心。排序让无序数据变有序查找让目标数据快速定位。本章聚焦嵌入式最常用的排序冒泡、选择、插入、希尔、快速排序及查找二分查找结合生活类比与代码实战助你轻松掌握。一、排序算法基础认知排序是将一组数据按特定顺序升序/降序排列。嵌入式场景中排序常用于数据显示如传感器数据排序后取中值滤波、资源调度按优先级排序任务。算法效率看时间复杂度执行步数和空间复杂度额外内存嵌入式资源有限需按需选择。二、冒泡排序 Bubble Sort知识点核心思想 像水中气泡上浮重复遍历数组每次比较相邻元素逆序则交换。每轮将最大元素“浮”到末尾n个元素需n-1轮。时间复杂度 最好On已排序加优化可提前退出最坏On²逆序平均On²。空间复杂度 O1原地排序。稳定性 稳定相等元素不交换顺序。代码实现int BubbleSort(int *pArray, int Len) { int i 0; int j 0; int Tmp 0; for (j 0; j Len-1; j) { for (i 0; i Len-1-j; i) { if (pArray[i] pArray[i1]) { Tmp pArray[i]; pArray[i] pArray[i1]; pArray[i1] Tmp; } } } return 0; }三、选择排序 Selection Sort知识点核心思想 每轮从待排序区选最小元素放到已排序区末尾。像挑苹果每次选最小放筐里。时间复杂度 无论好坏均On²固定n-1轮每轮找最小。空间复杂度 O1原地。稳定性 不稳定如[2,2,1]首2会与1交换次2前移顺序变。代码实现int SelectSort(int *pArray, int Len) { int j 0; int i 0; int Min 0; int Tmp 0; for (j 0; j Len-1; j) { Min j; for (i j1; i Len; i) { if (pArray[i] pArray[Min]) { Min i; } } if (Min ! j) { Tmp pArray[j]; pArray[j] pArray[Min]; pArray[Min] Tmp; } } return 0; }四、插入排序 Insertion Sort知识点核心思想 像整理扑克牌将未排序元素逐个插入已排序区正确位置。已排序区初始只有首元素。时间复杂度 最好O1已排序只需比较不移动最坏On²逆序平均On²。空间复杂度 O1原地。稳定性 稳定插入时遇相等元素停不后移。代码实现int InsertSort(int *pArray, int Len) { int j 0; int i 0; int Tmp 0; for (j 1; j Len; j) { Tmp pArray[j]; for (i j; i 0 pArray[i-1] Tmp; i--) { pArray[i] pArray[i-1]; } pArray[i] Tmp; } return 0; }五、希尔排序 Shell Sort知识点核心思想 插入排序改进版先按间隔gap分组如gapn/2, n/4...1每组内插入排序最后gap1时整体插入排序。小数据量时高效大数据量比O(n²)快。时间复杂度 依赖gap序列平均约On^1.3最坏On²。空间复杂度 O1。稳定性 不稳定分组交换可能打乱相等元素顺序。代码实现int ShellSort(int *pArray, int Len) { int step 0; int j 0; int i 0; int Tmp 0; for (step Len / 2; step 0; step / 2) { for (j step; j Len; j) { Tmp pArray[j]; for (i j; i step-1 pArray[i-step] Tmp; i - step) { pArray[i] pArray[i-step]; } pArray[i] Tmp; } } return 0; }六、快速排序 Quick Sort知识点核心思想 分治法选基准pivot将数组分两部分左边≤pivot右边≥pivot递归排左右子数组。嵌入式常用高效排序。时间复杂度 最好O(nlogn)基准分均匀最坏On²基准选两端且数组有序平均O(nlogn)。空间复杂度 O(logn)递归栈最坏On。稳定性 不稳定交换基准时可能打乱顺序。代码实现int QuickSort(int *pArray, int Low, int High) { int i 0; int j 0; int key 0; key pArray[Low]; j High; i Low; while (i j) { while (i j pArray[j] key) { j--; } pArray[i] pArray[j]; while (i j pArray[i] key) { i; } pArray[j] pArray[i]; } pArray[i] key; if (Low i-1) { QuickSort(pArray, Low, i-1); } if (i1 High) { QuickSort(pArray, i1, High); } return 0; }七、二分查找 Binary Search折半查找知识点核心思想 仅适用于有序数组每次取中间元素比较相等则找到目标小则查左半区大则查右半区重复至区间为空。时间复杂度 O(logn)每次减半查找范围。空间复杂度 O1循环版或O(logn)递归版。代码实现int MidSearch(int *pArray, int Low, int High, int TmpData) { int Mid 0; if (High Low) { return -1; } Mid (Low High) / 2; if (pArray[Mid] TmpData) { return MidSearch(pArray, Low, Mid-1, TmpData); } else if (pArray[Mid] TmpData) { return MidSearch(pArray, Mid1, High, TmpData); } else if (pArray[Mid] TmpData) { return Mid; } }八、嵌入式场景算法选择建议小数据量n50 插入排序简单高效中等数据量 希尔排序比O(n²)快大数据量且内存够 快速排序平均最快需稳定排序 插入排序稳定查找频繁且数据有序 二分查找O(logn)高效掌握这些算法嵌入式数据处理不再难。动手敲代码调试观察每步变化理解会更深刻。