快速排序的两种方法
簡述快速排序
- 快排主要分為挖空法和交換法
快排都是借助函數的遞歸實現的
1. 挖空法:
主要通過一個外部變量,將該位置的空間騰出來用于之后不滿足元素的存放,左右依次交換.
主要思想是通過遞歸的劃分實現問題分解,每次函數查找的是某個目標元素(一般使用的是當前左側的第一個元素)的實際位置
2. 交換法:
其實與挖空類似,只是這里每次找到一個當前不滿足值時是直接與其反面(左側/右側)上次查找停止的位置交換元素
void quicksort(vector<int> &op,int left,int right){if(left>right)return;//注意這里,容易出錯,只有當left>right 時其中的元素個數才為0 才不用繼續向下繼續進行int a=left,b=right,temp=op[left]`;while(a<b){while(a<b&&op[b]>=temp)b--;while(a<b&&op[a]<=temp)a++;if(a<b){int center=op[a];op[a]=op[b];op[b]=center;}}op[left]=op[a];//找到位置之后將此時這個位置的元素放到之前騰出位置的地方處op[a]=temp;quicksort(op,left,a-1);quicksort(op,a+1,right); }總結
- 上一篇: 为什么操作系统会有随机性
- 下一篇: 数据结构-链表篇