quickSort(arr, left, index 1)
// 对右子序列进行用户体验度排序
quickSort(arr, index + 1, right) } }
// 划分函数,将序列分成左右两个子序列,并返回枢轴元素的位
partition(arr, l, r) {
pivot = arr[r] //选择最后一个元素作为枢轴元素 i = l 1 //初始化指针i的位置 j = r // 执行循环,将小于枢轴的元素交换到左边,大于枢轴的元素交换到右边 while (l < j) {
if (arr[l] < pivot) {
i = i+1;
swap(arr[i], arr[l]) //如果当前元素小于枢轴,则将其交换到左侧
} else if (arr[l] = pivot) {
l+=1; //如果当前元素等于枢轴,则跳过不处理(因为枢轴可以有重复)
} else {
swap(arr[j], arr[l]) //如果当前元素大于枢轴,则将其交换到右侧,然后减小j的值(因为右侧已经有序)
j=1;
}
}
// 将枢轴元素放在正确的位置上(此时i+1的位置)
// 如果枢轴元素有多个重复的,那么需要将多余的枢轴元素放到右边
// 结合上述代码中的“else if (arr[right] = pivot)”部分,可以看出这个算法是不稳定的排序算法。
//
pivot = arr[i+1] //
swap(arr[i+1], arr[r]) //
return i+1 //
return pivotIndex //
} “`
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/971750.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复