快速排序和氣泡排序

2021-08-25 22:34:19 字數 1377 閱讀 1237

/**

* created by dcp on 2018/8/21.

*///快速排序

// (1)在資料集之中,選擇乙個元素作為基準(pivot)

// (2)所有小於「基準」的元素,都移到「基準」的左邊;所有大於「基準」的元素,都移到「基準」的右邊

// (3) 對「基準」左邊和右邊的兩個子集,不斷重複第一步和第二步,直到所有子集只剩下乙個元素為止

var quiksort=function

(arr)

var pivotindex=math.floor(arr.length/2);

var pivot=arr.splice(pivotindex,1)[0];

var left=;

var right=;

for(var i=0;iif(arr[i]else

}return quiksort(left).concat([pivot],quiksort(right))

}arr=[5,2,4,2,4,4,6,8]

console.log(quiksort(arr))

//氣泡排序,基本思想是把相鄰的元素兩兩比較,根據大小來交換元素的位置

//基本你**,使用雙迴圈來進行排序,外部迴圈控制所有的回合,內部迴圈代表每一輪的冒泡處理,先進行元素比較,再進行元素交換

function

maosort

(arr) }}

return arr

}arr=[5,2,4,2,4,8,4,6]

console.log(maosort(arr))

//氣泡排序的改進1,若果能判斷出數列已經有序,並且做出標記,剩下的幾輪排序就可以不必執行:利用布林變數issorted作為標記。

// 如果在本輪排序中,元素有交換,則說明數列無序;如果沒有元素交換,說明數列已然有序,直接跳出大迴圈。

function

bubblesort

(arr)

}if(issorted)

}return arr

}arr=[5,2,4,2,4,8,4,6]

console.log(bubblesort(arr))

//氣泡排序的改進2,對數列有序區的界定,可以在每一輪排序的最後,記錄下最後一次元素交換的位置,那個位置也就是無序數列的邊界,再往後就是有序區了

function

bubblesort

(arr)

}sortborder=lasrtexchangeindex;

if(issorted)

}return arr

}arr=[5,2,4,2,4,8,4,6]

console.log(bubblesort(arr))

排序 氣泡排序和快速排序

實現思路 把第乙個元素作為標記,依次判斷後續的值,如果小於它則放在左邊,如果大於它則放右邊,同理把左右兩部分看成乙個整體一直遞迴,最後再陣列拼接起來 它的最優時間複雜度為o nlogn 以標記元素為中心,正好每次左右都能均勻分配 最糟糕時間複雜度為o n 2 標記元素每次是最大或最小值,使所有數都劃...

氣泡排序和快速排序

來自 氣泡排序1 自創的,不知道它叫什麼排序,和冒泡差不多。public void risepot ref int array 氣泡排序2 public void risepot ref int array 快速排序 public void quicksort ref int arr,int low...

氣泡排序和快速排序

pragma mark pragma mark 氣泡排序 選擇排序 void swap int a,int b void bubblesort int a,int length 簡單優化,對於已經有序的序列,省去接下的迴圈。對於這種優化,實際還需考慮,多了賦值和判斷操作。if temp length...