排序算法
1、冒泡排序:每次比较相邻元素,若顺序错误将交换位置,本质也为消除序列中的逆序对;从小到大排序,则越大越靠后,一趟比较,将有一个元素归位;
2、快速排序:每次排序设置一个基准点,小于等于基准点全部放在左边,大于等于基准点全部放在右边,每一轮处理,就是将该轮基准点归位(实现中为左右哨兵相遇时);
注意:左起第一位作为基准点,则右哨兵需要先开始扫描; 时间复杂度 O(NlogN)
void quicksort(int begin,int end){ if(begin>end) return; int val=seq[begin]; //val存的就是基准数 int left=beign,right=end; while(left!=right){ //顺序很重要,左起第一为基准数,要先从右往左扫描 while(seq[right]>=val && left<right){ right--; } while(seq[left]<=val && left<right){ left++; } if(left<right){ //哨兵没有相遇 swap(seq,left,right); } } swap(seq,begin,left); //基准数归位 quicksort(begin,left-1); quicksort(right+1,end); }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步