下面是用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 進行分割槽,把把大於基準數的所有數放在它的...