演算法題 排序

2021-09-12 21:48:05 字數 1989 閱讀 5211

排序演算法

#include

#include

#include

using

namespace std;

vector<

int>

selects

(vector<

int> v)}}

return v;

}vector<

int>

inserts

(vector<

int> v)

v[j]

= note;

break;}

}}return v;

}vector<

int>

bubles

(vector<

int> v)}}

return v;

}vector<

int>

q(vector<

int> v,

int start,

int end)

v[i]

= x;

v =q(v, start, i-1)

; v =

q(v, i +

1, end)

;return v;

}vector<

int>

quicks

(vector<

int> v)

vector<

int>

merge

(vector<

int> v,

int start,

int mid,

int end)

while

(i <= mid)tmp.

push_back

(v[i++])

;while

(j <= end)tmp.

push_back

(v[j++])

;for

(i =

0; i < tmp.

size()

; i++

)v[start + i]

= tmp[i]

;return v;

}vector<

int>

mergesortup2down

(vector<

int> v,

int start,

int end)

vector<

int>

merges

(vector<

int> v)

// 以[low, high]為合法邊界,以v[i]為根節點維護最大堆,其中近根節點及其兩個子節點有可能不滿足最大堆性質

void

maxheapify

(vector<

int>

&v,int i,

int low,

int high)

else

return;}

// 從原二叉樹的最後乙個非葉節點開始進行調整

void

buildmaxheap

(vector<

int>

&v)}

vector<

int>

heaps

(vector<

int> v)

return v;

}int

main()

;//v = selects(v);

//v = inserts(v);

//v = bubles(v);

//v = quicks(v);

//v = merges(v);

v=heaps

(v);

for(

int i =

0;i < v.

size()

;i++

)cout << v[i]

<<

' ';

return0;

}

演算法題 排序演算法 堆排序 Heap Sort

堆排序是一種基於二叉堆 binary heap 結構的排序演算法,所謂二叉堆,我們通過完全二叉樹來對比,只不過相比較完全二叉樹而言,二叉堆的所有父節點的值都大於 或者小於 它的孩子節點,像這樣 最大堆定義 最大堆中的最大元素值出現在根結點 堆頂 堆中每個父節點的元素值都大於等於其孩子結點。我們再從數...

演算法題 選擇排序

最糟糕的情況 一趟排序,一次交換操作 基本運算 交換操作 一趟排序 找出最大元素與右邊元素交換 選擇排序過程圖 實現 使用遞迴方式實現插入排序 param ins param targetindex public static void insertionsort int ins,int targe...

排序演算法刷題

演算法分析 計數排序 複雜度 k n 題目題目描述 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了 nnn 個 111 到 100010001000 之間的隨機整數 n 100n 100n 100 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對應著不...