深圳平面广告设计公司福州搜索优化公司
2026/4/18 7:25:37 网站建设 项目流程
深圳平面广告设计公司,福州搜索优化公司,胶南网站建设哪家好,多商户免费开源商城系统源码四大基础排序算法 排序算法是编程世界的基石#xff0c;本文深入讲解四种最基础、最常用的排序算法#xff1a;冒泡排序、快速排序、插入排序和选择排序。 1. 冒泡排序 算法思想#xff1a; 重复遍历数组#xff0c;比较相邻元素#xff0c;如果顺序错误就交换#xff0c…四大基础排序算法排序算法是编程世界的基石本文深入讲解四种最基础、最常用的排序算法冒泡排序、快速排序、插入排序和选择排序。1. 冒泡排序算法思想重复遍历数组比较相邻元素如果顺序错误就交换使得较大元素逐渐到数组末尾。//冒泡排序voidBubble_Sort(intarr[],intlen){for(inti0;ilen-1;i){for(intj0;jlen-1-i;j){if(arr[j1]arr[j]){inttemparr[j];arr[j]arr[j1];arr[j1]temp;}}}}适用场景不适用场景教学演示和理解排序原理大规模数据排序小规模数据n100性能要求高的场景数据基本有序需要处理复杂对象的场景常见错误总结数组越界必须确保内层循环条件是jlen-1-i忘记使用临时变量直接交换会导致数据丢失2. 快速排序算法思想选择一个基准元素将数组分为两部分左边都小于基准右边都大于基准然后递归排序左右两部分。// 交换两个元素voidswap(int*a,int*b){inttemp*a;*a*b;*btemp;}// 分区函数 - 快速排序的核心intpartition(intarr[],intlow,inthigh){// 选择最后一个元素作为基准intpivotarr[high];// i 指向小于基准的区域的最后一个位置intilow-1;// 遍历数组for(intjlow;jhigh;j){// 如果当前元素小于等于基准if(arr[j]pivot){i;// 扩展小于基准的区域swap(arr[i],arr[j]);// 将当前元素放到小于基准的区域}}// 将基准放到正确位置i1swap(arr[i1],arr[high]);// 返回基准的最终位置returni1;}// 快速排序voidQuick_Sort(intarr[],intlow,inthigh){if(lowhigh){// pi 是基准的最终位置intpipartition(arr,low,high);// 递归排序左右两部分Quick_Sort(arr,low,pi-1);// 左半部分Quick_Sort(arr,pi1,high);// 右半部分}}适用场景不适用排序大规模数据排序小数据量排序n20对平均性能要求高且内存有限的场景数据基本有序不需要稳定排序需要稳定排序3. 插入排序算法思想将数组分为已排序和未排序两部分每次从未排序部分取出一个元素插入到已排序部分的正确位置。//插入排序voidinsertionSort(intarr[],intn){for(inti1;in;i){intkeyarr[i];// 当前要插入的元素intji-1;// 将比key大的元素向后移动while(j0arr[j]key){arr[j1]arr[j];j--;}// 插入key到正确位置arr[j1]key;}}适用场景不适用场景小规模数据n50大规模随机数据n1000数据基本有序逆序或高度无序数据链表排序性能要求极高的场景4. 选择排序算法思想每次从未排序部分选择最小或最大的元素放到已排序部分的末尾。//选择排序voidselectionSort(intarr[],intn){for(inti0;in-1;i){// 假设当前位置是最小值intminIndexi;// 在未排序部分查找真正的最小值for(intji1;jn;j){if(arr[j]arr[minIndex]){minIndexj;}}// 将最小值交换到当前位置if(minIndex!i){inttemparr[i];arr[i]arr[minIndex];arr[minIndex]temp;}}}适用场景不适用场景小规模数据大规模数据n1000交换成本高的情况需要稳定排序需要最少交换次数数据基本有序内存有限的嵌入式系统性能要求高的场景

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询