演算法入門(1) 快速排序

2021-10-24 14:03:01 字數 2287 閱讀 3272

下面是用c++寫的``快速排序`的函式**

讀出和寫入檔案的函式

常規快速排序的函式

引入隨機基準快速排序的函式

快速排序很簡單,但是還要記錄一下

#include

#include

#include

#include

#include

using namespace std;

//函式區

vector<

int>

readfile

(string filepath)

;//讀出檔案

void

writefile

(string filepath, vector<

int> data)

;//寫入檔案

intfindindex

(vector<

int>

& data,

int left,

int right)

;//尋找基準的下標

void

quicksort

(vector<

int>

& data,

int left,

int right)

;//快速排序

//改進的快速排序演算法

intrandfindindex

(vector<

int>

& data,

int left,

int right)

;void

randquicksort

(vector<

int>

& data,

int left,

int right)

;int

randnumber

(int left,

int right)

;//生成隨機數

intmain()

/**首先寫乙個快速排序的演算法

* vectordata是乙個待排序陣列

*/void

quicksort

(vector<

int>

&data,

int left,

int right)

}//尋找每次基準應該對應的下標

intfindindex

(vector<

int>

& data,

int left,

int right)

data[low]

= tmp;

return low;}}

/** 讀入和寫出檔案

* read:將讀出的檔案寫入 並返回vector* write:將vector資料寫入檔案當中

*/vector<

int>

readfile

(string filepath)

while

(!infile.

eof())

cout <<

"read: 成功讀出檔案"

<< endl;

return data;

}void

writefile

(string filepath, vector<

int> data)

for(

int item : data)

outfile << item << endl;

cout <<

"write: 成功寫入檔案"

<< endl;}/*

* 對常規快速排序演算法的改進

* 引入隨機基準

*/void

randquicksort

(vector<

int>

& data,

int left,

int right)

}int

randfindindex

(vector<

int>

& data,

int left,

int right)

data[low]

= tmp;

return low;}}

//生成[left,right]範圍內的隨機數

intrandnumber

(int left,

int right)

var foo =

'bar'

;

排序演算法入門 快速排序

涵義 雖說快速排序是由氣泡排序改進而來,二者都是通過元素交換達到排序效果,但是在個人看來快速排序思想和冒泡完全不同。時間複雜度 直接插入排序最好的時間複雜度為o nlog2n 直接插入排序的最壞時間複雜度為o n2 因此直接插入排序總的平均時間複雜度為o nlog2n 注 不穩定 快速排序之所以比冒...

排序1 快速排序演算法

經典快排思路 1.首先設定乙個分界值,通過該分界值將陣列分為左右兩個部分。2.左邊部分是小於等於分界值的資料,右邊部分是大於分界值的資料。3.左邊和右邊遞迴呼叫方法 設定分界值,劃分左邊的是小於等於分界值的資料,右邊是大於分界值的資料。舉例 4,6,2,0,3 1.選取最右邊的3作為分界值,劃分後陣...

排序演算法 1)快速排序

一 簡介 快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod 時間複雜度為o n logn 不穩定。基本思想是 1 先從數列中取乙個數作為基準數 2 進行分割槽,把把大於基準數的所有數放在它的...