JavaScript中的选择排序
上面是我编写的一个函数的代码。我对JS仍然很陌生,因此在语法方面有时会感到困惑。我目前只返回原始数组,但我正在尝试进行选择排序,右/左/中类型…我真的不知道现在发生了什么。我只是尝试排序,然后返回数组 有人能给我指出正确的方向吗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(最小值);
谢谢….您的代码的问题是左右参数的传递方式不对。以下是工作代码:
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;