This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
const bubble_Sort = (nums) => {
if(!Array.isArray(nums)) return -1; // --->if passed argument is not array
if(nums.length<2) return nums; // --->if array length is one or less
let swapped=false
temp=0,
count=-1,
arrLength=0;
do{
count ++;
swapped=false;
arrLength = (nums.length-1) - count; //---> not loop through sorted items
for(let i=0; i<=arrLength; i++){
if(nums[i]>nums[i+1]){
temp=nums[i+1];
nums[i+1]=nums[i];
nums[i]=temp;
swapped=true;
}
}
}
while(swapped)
return nums;
}
console.log(bubble_Sort([3, 0, 2, 5, -1, 4, 1]));
方法 1
var a = [33, 103, 3, 726, 200, 984, 198, 764, 9];
function bubbleSort(a) {
var swapped;
do {
swapped = false;
for (var i=0; i < a.length-1; i++) {
if (a[i] > a[i+1]) {
var temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
swapped = true;
}
}
} while (swapped);
}
bubbleSort(a);
console.log(a);
方法 2
function bubbleSort(items) {
var length = items.length;
//Number of passes
for (var i = 0; i < length; i++) {
//Notice that j < (length - i)
for (var j = 0; j < (length - i - 1); j++) {
//Compare the adjacent positions
if(items[j] > items[j+1]) {
//Swap the numbers
var tmp = items[j]; //Temporary variable to hold the current number
items[j] = items[j+1]; //Replace current number with adjacent number
items[j+1] = tmp; //Replace adjacent number with current number
}
}
}
}
方法 3
function bubbleSort() {
var numElements = this.dataStore.length;
var temp;
for (var outer = numElements; outer >= 2; --outer) {
for (var inner = 0; inner <= outer-1; ++inner) {
if (this.dataStore[inner] > this.dataStore[inner+1]) {
swap(this.dataStore, inner, inner+1); }
}
console.log(this.toString());
}
}
Couple of codes for bubble sort
bubblesort should not be used for larger arrays, can be used for smaller ones for its simplicity.
Optimized way, with all Checks
const bubble_Sort = (nums) => {
if(!Array.isArray(nums)) return -1; // --->if passed argument is not array
if(nums.length<2) return nums; // --->if array length is one or less
let swapped=false
temp=0,
count=-1,
arrLength=0;
do{
count ++;
swapped=false;
arrLength = (nums.length-1) - count; //---> not loop through sorted items
for(let i=0; i<=arrLength; i++){
if(nums[i]>nums[i+1]){
temp=nums[i+1];
nums[i+1]=nums[i];
nums[i]=temp;
swapped=true;
}
}
}
while(swapped)
return nums;
}
console.log(bubble_Sort([3, 0, 2, 5, -1, 4, 1]));
Method 1
var a = [33, 103, 3, 726, 200, 984, 198, 764, 9];
function bubbleSort(a) {
var swapped;
do {
swapped = false;
for (var i=0; i < a.length-1; i++) {
if (a[i] > a[i+1]) {
var temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
swapped = true;
}
}
} while (swapped);
}
bubbleSort(a);
console.log(a);
Method 2
function bubbleSort(items) {
var length = items.length;
//Number of passes
for (var i = 0; i < length; i++) {
//Notice that j < (length - i)
for (var j = 0; j < (length - i - 1); j++) {
//Compare the adjacent positions
if(items[j] > items[j+1]) {
//Swap the numbers
var tmp = items[j]; //Temporary variable to hold the current number
items[j] = items[j+1]; //Replace current number with adjacent number
items[j+1] = tmp; //Replace adjacent number with current number
}
}
}
}
Method 3
function bubbleSort() {
var numElements = this.dataStore.length;
var temp;
for (var outer = numElements; outer >= 2; --outer) {
for (var inner = 0; inner <= outer-1; ++inner) {
if (this.dataStore[inner] > this.dataStore[inner+1]) {
swap(this.dataStore, inner, inner+1); }
}
console.log(this.toString());
}
}
我相信在冒泡排序中,一旦 i 循环完成迭代,那么第 i 个元素现在就处于正确的位置。这意味着您应该将 j 循环编写为
for (var j = i + 1; j < records.length; j++)
否则您的冒泡排序将(甚至更加)效率低下。
I believe that in a bubble sort, once the i loop has completed an iteration, then the i'th element is now in its correct position. That means that you should write the j loop as
for (var j = i + 1; j < records.length; j++)
Otherwise your bubble sort will be (even more) inefficient.
发布评论
评论(7)
冒泡排序的一些代码
不应该用于较大的数组,由于其简单性可以用于较小的数组。
优化方式,包含所有检查
方法 1
方法 2
方法 3
Couple of codes for bubble sort
bubblesort should not be used for larger arrays, can be used for smaller ones for its simplicity.
Optimized way, with all Checks
Method 1
Method 2
Method 3
难道不应该是这样吗
Shouldn't that be
ES6 JavaScript 中的一个简单实现是
A simple implementation in ES6 JavaScript will be
您应该在第二个循环中使用 j 而不是 i,并且不要忘记将 j<1 更改为 j>1
you should use j instead of i in the second loop, and don't forget to change the j<1 to j>1
我相信在冒泡排序中,一旦 i 循环完成迭代,那么第 i 个元素现在就处于正确的位置。这意味着您应该将 j 循环编写为
否则您的冒泡排序将(甚至更加)效率低下。
I believe that in a bubble sort, once the i loop has completed an iteration, then the i'th element is now in its correct position. That means that you should write the j loop as
Otherwise your bubble sort will be (even more) inefficient.
我的解决方案:
My solution:
第二个
for
循环编码错误,应该是the second
for
loop is coded wrong it should be