快速排序的兩個版本總結

2021-09-28 16:38:33 字數 1152 閱讀 8120

左右區間為左閉合右閉合;

part的開始方向要和pivot的最初所取的方向相反

public

class

myquick

public

static

intpart

(int

a,int low ,

int high)

a[low]

= pivot;

return low;

}public

static

void

main

(string[

] args)

;quicksort

(a,0

,a.length)

;for

(int i:

a)}}

版本二:自己實現

注意點:

左右區間為左閉合右開;

public

class

quiksort

public

static

intpart

(int

array,

int left,

int right)

} pivotindex = j;

int temp =0;

temp = array[pivot]

; array[pivot]

= array[pivotindex]

; array[pivotindex]

= temp;

return pivotindex;

}public

static

void

main

(string[

] args)

;quicksort

(a,0

,a.length)

;for

(int i:

a)}}

小結:

1.關於有些判斷程式,為避免陣列下標越界,可以使用&&提前起到短路的功能,由此把下標索引放到下標訪問的前面。

2.關於左右劃分問題,以及其他的雙指標問題,要著重考慮邊界情況,即左指標一直走到最右邊以及右指標走到最左邊會怎麼樣。

兩個版本的getline函式

今天查了下msdn,發現getline這個函式有兩個版本,string getline basic istream getline 它們都是從輸入流獲取一行資料到指定的位置。它們的函式原型如下 首先看basic istream中的版本 該函式從輸入流中讀取 count 1個元素儲存到 str,最後再...

兩個排序演算法

然後貼 1 int num 10 2 time t tms 3 srand unsigned int time tms 生成種子 4for int i 0 i 10 i 生成陣列元素為10 的陣列59 1011 氣泡排序 12for int i 0 i 10 1 i 1324 25 1 int nu...

Linux安裝兩個版本的opencv

參考鏈結 還有關於cuda的方法,我沒試 原版本是3.1.0 因為想用opencv的legacy模組,所以安裝了2.4.13 pkg config modversion opencv 原本的版本安裝在 usr local include opencv和 usr local include openc...