网站开发怎么配合,上海最近逮捕人员,做暖暖小视频免费网站,phpcms网站模板快速排序
快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法#xff0c;
其基本思想为#xff1a;
任取待排序元素序列中的某元素作为基准值#xff0c;按照该排序码将待排序集合分割成两子序列#xff0c;左子序列中所有元素均小于基准值#xff0c;右子序列…快速排序
快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法
其基本思想为
任取待排序元素序列中的某元素作为基准值按照该排序码将待排序集合分割成两子序列左子序列中所有元素均小于基准值右子序列中所有元素均大于基准值然后最左右子序列重复该过程直到所有元素都排列在相应位置上为止。
将区间按照基准值划分为左右两半部分的常见方式有
1. hoare版本
2. 挖坑法
3. 前后指针版本递归方式
如果当中元素个数多于一个则进行快排 //从右侧位置开始选择 //给两个指针一个放在最左边一个放在最右边左边找比key大的找到停下右边找小的找到停下然后把这两个进行交换 //两个相遇后当前的位置元素与最后元素交换也就是与key交换
//begin从前往后找比基准值大的元素找到停下 while (beginendarray[begin]key){ //比key小或者等于往后走大停下来,找到大的,如果本身序列最大的数在最后一个begin会越界则必须保证beginend
//end从后往前找比基准值小的元素找到停下来 //找到小的 //如果两个不在同一个位置 //两个交换
//end和begin相遇把他们当前指向的数与key进行交换
挖坑法 前后指针版本 基准值取数组最后一个元素 cur开始遍历数组如果当前cur里的值小于基准值pre往后走一步两个在同一个位置不再同一位置进行交换。如果cur的值大于基准值cur一个人往前走。 最好场景数据越随机越乱越好On log2 n 最差的场景接近有序On*n 三数取中法降低最差场景 之前的操作要做一些改动
递归转化成循环