面試前看一下快速排序 Quick Sort

2021-10-07 23:29:40 字數 1173 閱讀 6323

演算法描述:

使用分治法來把乙個串(list)分為兩個子串(sub-lists)。具體演算法描述如下:

⚫ 從數列中挑出乙個元素,稱為 「基準」(pivot);

⚫ 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割槽退出之後,

該基準就處於數列的中間位置。這個稱為分割槽(partition)操作;

⚫ 遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

排序方法

時間複雜度(平均)

時間複雜度(最壞)

時間複雜度(最好)

空間複雜度

穩定性快速排序

o(nlog2n)

o(n²)

o(nlog2n)

o(nlog2n)

不穩定key 值的選取可以有多種形式,例如中間數或者隨機數,分別會對演算法的複雜度產生不同的影響。

**實現:

public

class

quicksort3

i = low;

j = high;

temp = arr[low]

;while

(i != j)

while

(arr[i]

<= temp && i < j)

//滿**換條件

if(i < j)

}//交換基準位與中間數

arr[low]

= arr[i]

; arr[i]

= temp;

//遞迴呼叫左右兩邊

quicksort

(arr, low, i -1)

;quicksort

(arr, i +

1, high);}

public

static

void

main

(string[

] args)

;quicksort

(arr,

0, arr.length -1)

; system.out.

println

(arrays.

tostring

(arr));

}}

開發注意事項(開發前看一下,開發後看一下)

開發程式需要注意的點 1.操作刪除或者不能自由的恢復的資料,都需要新增上二次確認 防止資料誤刪 2.進行查詢個人資料,一定要判斷當前登入人是否有許可權 檢視,修改,刪除 一般都需要配合當前登入人標識資訊來判斷 防止他人操作別人的資料 3.盡量查詢資料使用get方式,修改,刪除,新增 使用post方式...

進來看一下

進來看下,知道的解答一下,實在是不明白.聽君一席話,勝讀十年書!include include using namespace std string fun1 const string s1,const string s2 const string fun2 string s1,const stri...

華為的面試題 ,大家看一下

typedef int pint define pint int 那麼 const pint p p不可更改,但p指向的內容可更改 const pint p p可更改,但是p指向的內容不可更改。上面說的對嗎?答案const pint p1 p1不可更改,但p1指向的內容可更改 const pint ...