在javascript中冒泡排序

时间:2016-05-12 07:41:27

标签: javascript

我曾尝试在javascript中使用冒泡排序,但在交换数字时卡住了。想法是对数字进行分组(例如:输入:154514,输出应为:114455)。所以我尝试使用冒泡排序来获得上述输出。

我的代码在这里:

function numSort(num){
var temp = '';
var temp1 = '';
arr = num.toString();
var n = arr.length; 
for(i=0; i<n-1; i++){
    for(d=0; d<n-i-1; d++){
        if(arr[d] > arr[d+1]){
            temp = arr[d];//here I'm trying to swap the inputs as: 89, but it's not letting.
            arr[d] = arr[d+1];
            arr[d+1] = temp;                
        }console.log(arr[d]);
}       
}   
}console.log(numSort(98));

交换不起作用。请帮助。

非常感谢。

3 个答案:

答案 0 :(得分:1)

所以你真的很亲密。您遇到的问题是,您无法通过访问索引处的字符来更改字符串中特定字符的值,因为字符串是不可变的。因此,如果我有字符串a[2] = 'p';而我a "test"仍然是"tept"而不是function numSort(num){ var temp = ''; var temp1 = ''; arr = num.toString().split(''); // turn the string into an array var n = arr.length; for(i=0; i<n-1; i++){ for(d=0; d<n-i-1; d++){ if(arr[d] > arr[d+1]){ temp = arr[d]; // here I'm trying to swap the inputs as: 89, but it's not letting. arr[d] = arr[d+1]; arr[d+1] = temp; } console.log(arr[d]); } } return arr.join(''); // you can optionally do a parseInt() here to convert it back to a number } console.log(numSort(98)); ,因为字符串是不可变的。那就是说我们需要做些什么来修复你的排序是将字符串转换为数组(这是可变的),然后返回到这样的字符串:

self.Instance = vlc.Instance()
self.player = self.Instance.media_player_new()

因此,要将字符串转换为数组,我们使用this answer然后split()将数组转换回字符串。

答案 1 :(得分:1)

为什么不将字符串转换为数组?

arr = num.toString().split("");

答案 2 :(得分:0)

可以使用sort方法对数组进行排序 - 所以我们只使用它:

function numSort(num) {
    
  return num.toString().split('').sort().join('');
  
}

console.log( numSort(154514) ); // 114455
console.log( numSort(765432) ); // 234567
console.log( numSort(32) ); // 23

numSort将参数转换为字符串,将其拆分为数组,以数字方式对其进行排序,然后再将其连接起来。如果您想要返回一个数字(而不是字符串),只需使用parseInt