「数据结构」八大排序(超详解 附动图 源码)(11)
2023-04-24 来源:飞速影视
这里不再单趟演示该过程。。。
代码如下:
// 快速排序挖坑法int PartSort2(int* a, int left, int right){ int key = a[left];//取出基准值 int hole = left;//保存坑的位置 while (left < right) { while (left < right && a[right] >= key) { right--; } a[hole] = a[right]; hole = right; while (left < right && a[left] <= key) { left ; } a[hole] = a[left]; hole = left; } a[hole] = key; return hole;}void QuickSort(int* a, int left, int right){ if (left >= right) { return; } int keyi = PartSort2(a, left, right); QuickSort(a, left, keyi - 1); QuickSort(a, keyi 1, right); }
6.3前后指针法
前后指针法是一个新思路,不太好理解,但是代码比较简单。
具体思路是:
选定基准值,定义prev和cur指针(cur = prev 1) cur先走,遇到小于基准值的数停下,然后将prev向后移动一个位置 将prev对应值与cur对应值交换 重复上面的步骤,直到cur走出数组范围 最后将基准值与prev对应位置交换 递归排序以基准值为界限的左右区间
动图演示:
单趟演示:
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号