详细的解决方案的快速排序(排序)的Javascript算法序列算法
(1)在数据集中,选择一个元素作为轴心。
(2)所有小于基准的元素都移到数据的左边;大于基准的所有元素都移到数据的右边。
(3)在基准的左右两边重复两个子集的第一步和第二步,直到所有子集只剩下一个元素为止。
例如,现在有一组数据集{ 85, 24, 63、45, 17, 31、96, 50 },如何排序呢
第一步是选择中间元素45作为基准。(基准值可以任意选择,但中间的值更容易选择)。
第二步,按照顺序,将每个元素与基线比较,形成两个子集,一个小于45 ,另一个子大于45 。
第三步是重复两个子集的第一步和第二步,直到所有子集只剩下一个元素。
遵循Internet上的信息(在这里和这里),上述算法以Javascript语言实现。
首先,一个快速排序函数的定义,它的参数是一个数组。
无功快速排序=功能(ARR){
};
然后,检查数组中元素的数量,如果小于1返回。
无功快速排序=功能(ARR){
如果(arr.length <= 1){ return ARR;}
};
然后,选择并将其与原始数组分开,然后定义两个空数组,这些数组用于存储左右两个子集。
无功快速排序=功能(ARR){
如果(arr.length <= 1){ return ARR;}
无功pivotindex = math.floor(arr.length / 2);
VaR支点= arr.splice(pivotindex,1){ 0 };
var左};
var;
};
然后,您开始遍历数组,小于基准的元素将子集放在左边,该子集大于右子集中的基线元素。
无功快速排序=功能(ARR){
如果(arr.length <= 1){ return ARR;}
无功pivotindex = math.floor(arr.length / 2);
VaR支点= arr.splice(pivotindex,1){ 0 };
var左};
var;
对于(var i = 0;i < arr.length;i++){
如果(ARR {我} <支点){
Left.push(ARR {我});
其他{ }
Right.push(ARR {我});
}
}
};
最后,使用递归重复该过程,可以得到有序数组。
无功快速排序=功能(ARR){
如果(arr.length <= 1){ return ARR;}
无功pivotindex = math.floor(arr.length / 2);
VaR支点= arr.splice(pivotindex,1){ 0 };
var左};
var;
对于(var i = 0;i < arr.length;i++){
如果(ARR {我} <支点){
Left.push(ARR {我});
其他{ }
Right.push(ARR {我});
}
}
返回快速排序(左),Concat({转},快速排序(右));
};
当你使用它时,快速排序()直接调用。
以上是一个快速排序算法(快速排序)算法由萧边Javascript算法系列,我想帮你。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站。