快速排序(未完結)

2021-10-04 19:53:33 字數 1292 閱讀 3138

正常的選擇、氣泡排序,時間複雜度為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.什麼是依賴注入?什麼是控制反轉?依賴注入 元件...