JavaScript中的选择排序

JavaScript中的选择排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,上面是我编写的一个函数的代码。我对JS仍然很陌生,因此在语法方面有时会感到困惑。我目前只返回原始数组,但我正在尝试进行选择排序,右/左/中类型…我真的不知道现在发生了什么。我只是尝试排序,然后返回数组 有人能给我指出正确的方向吗 谢谢….您的代码的问题是左右参数的传递方式不对。以下是工作代码:alert(newsort(arr,0,arr.length))功能选择排序(arr){ var-temp=0; 对于(变量i=0;ijx==min); 阵列拼接(索引1); arr.push(最小值);

上面是我编写的一个函数的代码。我对JS仍然很陌生,因此在语法方面有时会感到困惑。我目前只返回原始数组,但我正在尝试进行选择排序,右/左/中类型…我真的不知道现在发生了什么。我只是尝试排序,然后返回数组

有人能给我指出正确的方向吗


谢谢….

您的代码的问题是左右参数的传递方式不对。以下是工作代码:
alert(newsort(arr,0,arr.length))

功能选择排序(arr){
var-temp=0;
对于(变量i=0;iarr[j]){//将元素与其他元素的重置进行比较
temp=arr[i];//将值从最小值交换到最大值
arr[i]=arr[j];
arr[j]=温度;
}
}
}
返回(arr);
}
选择排序([4,6,5,3,7,9]);

您基本上是在做选择,开始的顺序是相反的,这将不起作用

左侧应以0开头,右侧应以arr.length结尾

newsort(arr,0,arr.length)这应该行得通

如果您想在javascript中实现选择排序,请查看此链接


选择排序算法说:重复查找未排序数组的最小值

递归方法

  • 查找最小编号及其索引/位置
  • 从数组中删除min项,并将其附加到同一项的末尾
  • 在每次迭代之后,当找到最小值时,提供未排序的数组(如果没有,您将再次获得以前的最小值)。参见Math.min的参数
  • 注意:selectionSort(i)的第二个参数用于对未排序数组的元素进行排序

    功能选择排序(arr,i){
    如果(i==0){
    返回arr;
    }
    常数min=Math.min(…arr.filter((x,j)=>jx==min);
    阵列拼接(索引1);
    arr.push(最小值);
    返回selectionSort(arr,--i);
    }
    常量unsortedar=[5,34,5,1,6,7,9,2100];
    
    console.log('result',selectionSort(unsortedar,unsortedar.length))
    雄辩的解决方案:

    function selectionSort(arr) {
    
        var temp = 0;
        for (var i = 0; i < arr.length; ++i) {
            for (var j = i + 1; j < arr.length; ++j) {
                if (arr[i] > arr[j]) { // compare element with the reset of other element
                    temp = arr[i];  // swap the valuse from smallest to gretest
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        return (arr);
    }
    
    selectionSort([4,6,5,3,7,9]);
    
    const selectionSort = (items) => {
      items.forEach((val, i, arr) => {
        const smallest = Math.min(...arr.slice(i))
        const smallestIdx = arr.indexOf(smallest)
    
        if (arr[i] > arr[smallestIdx]) {
          const temp = arr[i]
          arr[i] = arr[smallestIdx]
          arr[smallestIdx] = temp
        }
      })
    
      return items
    }
    
    标准解决方案:

    function selectionSort(arr) {
    
        var temp = 0;
        for (var i = 0; i < arr.length; ++i) {
            for (var j = i + 1; j < arr.length; ++j) {
                if (arr[i] > arr[j]) { // compare element with the reset of other element
                    temp = arr[i];  // swap the valuse from smallest to gretest
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        return (arr);
    }
    
    selectionSort([4,6,5,3,7,9]);
    
    const selectionSort = (items) => {
      items.forEach((val, i, arr) => {
        const smallest = Math.min(...arr.slice(i))
        const smallestIdx = arr.indexOf(smallest)
    
        if (arr[i] > arr[smallestIdx]) {
          const temp = arr[i]
          arr[i] = arr[smallestIdx]
          arr[smallestIdx] = temp
        }
      })
    
      return items
    }
    
    const selectionSort=array=>{
    const arr=Array.from(Array);//避免副作用
    for(设i=0;i
    功能选择排序(数组大小,数组){
    var min_指数=0;
    对于(变量i=0;i数组[j]){
    最小指数=j;
    }
    }
    [array[min_index],array[i]=[array[i],array[min_index]]
    }
    返回数组
    
    }

    功能选择端口(inputArr){
    设n=inputArr.length;
    for(设i=0;i
    这是一个简单的选择排序算法。

    function selectionSort(inputArr) {
      let n = inputArr.length;
    
      for (let i = 0; i < n; i++) {
        // Finding the smallest number in the subarray
        let min = i;
        for (let j = i + 1; j < n; j++) {
          if (inputArr[j] < inputArr[min]) {
            min = j;
          }
        }
        if (min != i) {
          // Swapping the elements
          let tmp = inputArr[i];
          inputArr[i] = inputArr[min];
          inputArr[min] = tmp;
        }
      }
      return inputArr;
    }
    
    const numbers = [50, 30, 10, 40, 60];
    
    console.log(selectionSort(numbers));
    
    // Output: [ 10, 30, 40, 50, 60 ]
    
    let数组=[64,25,3,3,22,11,44,43,12,65,213,7,3,6,3,0,6565,43];
    const selectionSort=a=>{
    设sa=[];
    设len=a.长度;
    
    对于(让i=0;i经典情况下,从外观上看,盯着屏幕太长时间,该函数起作用-您只是以错误的顺序传递
    参数。数组有一个排序方法,
    [3,1,2]。sort()
    ,并通过将其作为参数传递来使用自定义排序函数。我不明白您想做什么,但如果您想对数组进行排序,为什么不使用sort()方法?arr.sort(函数(a,b){return a-b})将对数组进行排序。请检查@PatrickEvans它可能处于启用状态purpose@aduch,这就是为什么我没有说他应该用它:)因为他说他是js的新手,所以他让他知道有一种排序方法和一种使用自定义排序方法的方法。这就是为什么我给
    取一个合适的名称是
    开始
    结束
    。ES2015中JavaScript的一个功能Destructuring使处理swa成为可能p在一行中:
    [array[i],array[min]=[array[min],array[i]]
    。知道如何编写自己的交换函数仍然很好,但解构是一个很好的新工具,可以放在你的工具带上。虽然这段代码可以回答这个问题,但提供关于为什么和/或这段代码如何回答这个问题的额外上下文可以提高它的长期价值。
    function selectionSort(arr) {
    
        var temp = 0;
        for (var i = 0; i < arr.length; ++i) {
            for (var j = i + 1; j < arr.length; ++j) {
                if (arr[i] > arr[j]) { // compare element with the reset of other element
                    temp = arr[i];  // swap the valuse from smallest to gretest
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        return (arr);
    }
    
    selectionSort([4,6,5,3,7,9]);
    
    const selectionSort = (items) => {
      items.forEach((val, i, arr) => {
        const smallest = Math.min(...arr.slice(i))
        const smallestIdx = arr.indexOf(smallest)
    
        if (arr[i] > arr[smallestIdx]) {
          const temp = arr[i]
          arr[i] = arr[smallestIdx]
          arr[smallestIdx] = temp
        }
      })
    
      return items
    }
    
    const selectionSort = (arr) => {
      for (let i=0; i <= arr.length-1; i++) {
        // find the idnex of the smallest element
        let smallestIdx = i
    
        for (let j=i; j <= arr.length-1; j++) {
          if (arr[j] < arr[smallestIdx]) { 
            smallestIdx = j
          }
        }
    
        // if current iteration element isn't smallest swap it
        if (arr[i] > arr[smallestIdx]) {
          let temp = arr[i]
          arr[i] = arr[smallestIdx]
          arr[smallestIdx] = temp
        }
      }
    
      return arr
    }
    
    
    console.log( // [14, 29, 56, 72, 92, 98] 
      selectionSort([29, 72, 98, 14, 92, 56]) 
    )
    
    function selectionSort(array_size, array) {
    var min_index = 0;
    for (var i = 0; i < array_size - 1; i++) {
        min_index = i;
        for (var j = i + 1; j < array_size; j++) {
            if (array[min_index] > array[j]) {
                min_index = j;
            }
        }
        [array[min_index],array[i]] = [array[i],array[min_index]]
    }
    return array
    
    function selectionSort(inputArr) {
      let n = inputArr.length;
    
      for (let i = 0; i < n; i++) {
        // Finding the smallest number in the subarray
        let min = i;
        for (let j = i + 1; j < n; j++) {
          if (inputArr[j] < inputArr[min]) {
            min = j;
          }
        }
        if (min != i) {
          // Swapping the elements
          let tmp = inputArr[i];
          inputArr[i] = inputArr[min];
          inputArr[min] = tmp;
        }
      }
      return inputArr;
    }
    
    const numbers = [50, 30, 10, 40, 60];
    
    console.log(selectionSort(numbers));
    
    // Output: [ 10, 30, 40, 50, 60 ]
    
    let array = [64, 25, 3, 3, 22, 11, 44, 43, 12, 65, 213, 7, 3, 6, 3, 0, 6565, 43];
    const selectionSort = a => {
      let sa = [];
      let len = a.length;
     for(let i=0;i<len;i++) {
       sa.push(Math.min(...a));
        a.splice(a.indexOf(Math.min(...a)), 1)
     }
     return sa;
    }
    selectionSort(array) // returns sorted array;