正常的選擇、氣泡排序,時間複雜度為o(nn)
快速排序 平均為:o(n×log(n)) 最壞:o(nn)
就是將陣列按照 其中的乙個元素(基準值)進行分割,分割為兩個部分:大於基準值和小於基準值
因為此時第一次排完序只是將陣列分割,而被分割的部分並不一定是從小到大排序,所以需要下一次的對兩個分割部分在進行各自的 找基準值+分割 。。。成為乙個遞迴的過程
而遞迴的出口就是基準值下標的 左下標 >= 右下標
#include
void
quicksort
(int
* array,
int left,
int right)
;int
partsort
(int
* array,
int left,
int right)
;int
main()
quicksort
(array,
0, n -1)
;for
(i =
0; i < n; i++
)return0;
}void
quicksort
(int
* array,
int left,
int right)
//返回基準值的位置 ,也就是此次的中點位置
int index =
partsort
(array, left, right)
;//重新將陣列分為兩段,通過遞迴呼叫將兩部分進行進一步的排序
//左半部分
quicksort
(array, left, index -1)
;//右半部分
quicksort
(array, index +
1, right);}
intpartsort
(int
* array,
int left,
int right)
else
}while
(left < right)
else}}
//最後退出迴圈的條件為left > right,那麼這個left後者right就是最後被 複製 的元素;
array[temp]
= point;
//最後將 最後乙個複製的元素 賦值為 一開始的point。
return temp;
//返回此次的中點位置
}
積累(未完結)
1.輸出字元寬度 include include using namespace std intmain 2.精確到小數點後幾位 include include using namespace std intmain 3.不同資料型別儲存空間大小 include using namespace st...
各種排序演算法總結(未完結)
假設有n個元素,氣泡排序思想是從前往後將相鄰的兩個元素進行比較,如果前者大於後者,交換兩者位置 如果前者小於後者,則不進行任何操作。這樣一次迴圈將最大的乙個數放在最後面,下次迴圈只需對前n 1個元素進行排序,迴圈結束將第二大的數排在倒數第二,依次類推,將n個元素完成排序。氣泡排序第一次迴圈需要比較n...
Spring總結(未完結)
1.什麼是spring 是乙個輕量級 實現了控制反轉 提供了面向切面的容器框架 spring提供對持久層以及對事務的支援 spring提供mvc web框架的實現,並對一些常用的企業服務api提供一致的模型封裝 spring提供與主流框架的整合方案 2.什麼是依賴注入?什麼是控制反轉?依賴注入 元件...