//氣泡排序
// 這裡的原理就是迴圈便利陣列,內層迴圈遍歷陣列,將裡面的第乙個元素取出來和第二個陣列比較, 然後替換位置, 第二個和第三個比較,
// 比完之後最後乙個元素一定是最小的,那麼外層的第二次迴圈減掉一次
function bubblesort(array)
}} return array
}// 使用es6進行簡化 , 解構賦值
function bubblesort(array)
}} return array
}// 另外一種方法, 不容易繞暈
function bubblesort(array)
}array1.unshift(array.pop())
} return array1
}
// 選擇排序
// 這裡的原理就是 迴圈遍歷陣列, 每一次遍歷將陣列, 將裡面的第乙個元素分別與其他的元素進行比較,
// 最小的乙個放在第乙個位置, 接下來的從第二個元素開始與其他元素進行比較
var array = [3, 1, 7, 0, 20, 10]
var selectsort = function(array)
}} return array }
var selectsort = function(array)
}array1.push(array.shift())
} return array1
}
// 插入排序
// 插入排序的工作原理就是將未排序資料,對已排序資料序列從後向前掃瞄,找到對應的位置並插入,最開始的預設以第乙個元素為已排序的
// 插入排序通常採用佔位的形式,在從後向前掃瞄的過程中,需要反覆的把已排序的元素逐步向後挪位,為新插入元素提供插入的位置。
function insertsort()
// 如果那麼currentelement 大於 有序中當前比對的 數字, 那就跳出來while,
//那麼就將 currentelement 插入到有序序列中比currentelement 小的元素後面, 插入就結束了, 換沒有排序序列中的下乙個人數字進行比較
array[orderindex + 1] = currentelement
} return array
}
//快速排序
// 思路是找出乙個中間點數字, 然後比這個小的放左邊, 大的放右邊, 然後分別遞迴左邊和右邊的陣列, 最後拼在一起
function quicksort(array)
let left = , right =
let datum = array.splice(math.floor(len / 2), 1)[0]
for (let i = 0; i < array.length; i++) else
} let leftarray = quicksort(left)
let rightarray = quicksort(right)
return leftarray.concat(datum, rightarray)
// return quicksort(left).concat(datum, quicksort(right))
}
組合排序:
var data = [['白色','黑色','金色','粉紅色'], ['16g','32g','64g','128g'], ['移動','聯通','電信']]
function combine(data, dataindex = 0)
} if(data.length < 2)
var temparrtwo =
var originarr = data.shift()
var targetarr = data.shift()
var targetlen = targetarr.length
// 迴圈遍歷data 的第乙個引數元素, 將其子元素的 與後面乙個組合的每乙個人元素 合併在一起
for (let i = 0; i < originarr.length; i++)
} data.unshift(temparrtwo)
dataindex += 1
return combine(data, dataindex)
}combine(data)
// 組合演算法
// [a,b,c,d] 進行全排列組合 得到 [a,b,ab,c,ac,bc,abc,d,ad,bd,abd,cd,acd,bcd,abcd]
// 例子:
// 資料來源a,b,c
// 1.拿出a,組合資料group為空,插入資料來源a元素到組合資料group,此時group=[a]
// 2.拿出b,組合資料group拿出a,a和b組合,得到ab,把資料來源b元素、ab插入組合資料group,此時group=[a,b,ab]
// 3.拿出c,組合資料group拿出a、b、ab,分別與c組合,分別得到ac、bc、abc,把資料來源c元素、ac、bc、abc插入組合資料group,此時group=[a,b,ab,c,ac,bc,abc]
var data = ['a', 'b', 'c', 'd']
function groupsort(data)
} return groups
}
陣列的幾種排序方法
1.陣列的氣泡排序 演算法思想 遍歷待排序的陣列,每次遍歷比較相鄰的兩個元素,如果他們的排列順序錯誤就交換他們的位置,經過一次排序後,最大的元素會浮至陣列的末端,重複操作,直到排序完成 例如比較 進行比較 第一次 j 0 8 10 9 50 20 15 j 1 8 9 10 50 20 15 j 2...
陣列的幾種排序方法
排序就是把亂序的陣列從小到大 從大到小 進行排序,這裡給大家介紹一下最常見的三種排序方法。選擇排序 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。實現如下 ...
陣列排序常見的幾種演算法
氣泡排序的基本思想就是對比相鄰的元素值,如果滿足條件就交換元素值,把小的放前面,把大的放後面。其演算法由兩層迴圈實現,外層迴圈控制排序次數,一般為排序的陣列的長度減1,內層迴圈主要用於比較相鄰元素的大小,以判斷是否交換位置。內層的對比次數隨著外層排序的次數的增加而減少。如下 public class...