陣列的幾種排序

2021-09-13 18:22:03 字數 2747 閱讀 1028

//氣泡排序

// 這裡的原理就是迴圈便利陣列,內層迴圈遍歷陣列,將裡面的第乙個元素取出來和第二個陣列比較, 然後替換位置, 第二個和第三個比較,

// 比完之後最後乙個元素一定是最小的,那麼外層的第二次迴圈減掉一次

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...