Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中按降序排序数组而不使用任何内置方法_Javascript_Sorting - Fatal编程技术网

在javascript中按降序排序数组而不使用任何内置方法

在javascript中按降序排序数组而不使用任何内置方法,javascript,sorting,Javascript,Sorting,我需要在javaScript中按降序对一个简单数组进行排序,而不使用内置方法,这已经花费了我太多的时间。。。请帮忙 function dscSort(array) { for (var i = 1; i < array.length; i++) { var tmp = array[i]; for (var j = i - 1; j >= 0 && (array[j] < array[i]); j--) {

我需要在javaScript中按降序对一个简单数组进行排序,而不使用内置方法,这已经花费了我太多的时间。。。请帮忙

function dscSort(array) {
    for (var i = 1; i < array.length; i++) {
        var tmp = array[i];
        for (var j = i - 1; j >= 0 && (array[j] < array[i]); j--) {
            array[j + 1] = array[j];
        }
        array[j + 1] = tmp;
    }
    return array;
}
函数dscSort(数组){
对于(变量i=1;i=0&&(array[j]
方法是正确的。你只是在代码中有一个小错误。与此相反:

for (var j = i - 1; j >= 0 && (array[j] < array[i]); j--) {
for(var j=i-1;j>=0&&(array[j]
这样做:

for (var j = i - 1; j >= 0 && (array[j] < tmp); j--) {
for(var j=i-1;j>=0&&(数组[j]

这是必要的,因为在第一次迭代时,
array[i]
处的值可能会被
array[i-1]
覆盖,因此在下一次迭代中,您可能会看到错误的值。

您可以为自己创建一个如下所示的值。 使用此命令的语法

let numbSet = [44,55,22,55,44,11];
Ascending by default numbSet.sorty();
Descending numbSet.sorty('dsc');
如果是一个对象数组,则像

let objSet = [{a:44},{a:55},{a:22},{a:55},{a:44},{a:11}];
objSet.sorty('asc', 'a');
let numbSet=[44,55,22,55,44,11];
设objSet=[{
a:44
}, {
a:55
}, {
a:22
}, {
a:55
}, {
a:44
}, {
a:11
}];
Array.prototype.sorty=函数(类型、键){
如果(此长度){
如果(类型=='dsc'){
返回(this,this.length-1,key?key:false);
}否则{
//违约认定
返回recuAsc(this,0,key?key:false);
}
}
归还这个;
}
功能恢复(arry、indx、键){
设arryLength=arry.length;
让Issmeller=false;
设a,b,i=indx+1;
if(indx!=(arryLength-1)){
对于(i;i=0;i--){
a=arry[indx];
b=arry[i]
isSmaller=键?a[键]console.log(objSet.sorty('asc','a'))
你所说的“ready function”是什么意思,比如我不能使用array.sort(),但必须像刚才那样编写它,但它不起作用为什么你不签出快速排序。我假设这是学校作业?在这种情况下,他们很可能正在寻找solution@mhodges很好,谢谢!