泡排序也称为冒泡排序法和起泡排序法。
基本思想:第趟排序是从序列中前n-i+1个元素的第1个元素开始,相邻两个元素进行比较,若前者大于后者,两者交换位置,否则不交换。经过如此一趟排序,使得n-i+1个元素中值最大元素被安置在序列的第n-i+1个位置上。重复的执行若干趟,直到某一趟排序过程中不出现元素交换位置的动作,排序结束。
算法如下:
function bubbleSort(arr) {
let n = arr.length
let flag = 1
let i = n-1, j
while ( i>0 && flag==1 ) {
flag = 0
for ( j=0; j<i; j++) {
if( arr[j] > arr[j+1] ){
temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
flag = 1
}
}
i--
}
return arr
}
let arr = [5,3,8,1,9,2,7,4,6,10]
bubbleSort(arr)
性能:
时间复杂度:最好O(n),平均O(n2)。是稳定排序法。
网友评论