排序整理c

2021-10-25 18:48:06 字數 1591 閱讀 9346

常見的排序演算法

根據時間複雜度的不同,可分為三類

1.o(n²) 的排序演算法

2.o(n log n) 的排序演算法

3.線性的排序演算法

氣泡排序(bubble sort)

步驟1.比較相鄰的元素,如果第乙個比第二個大就交換。一次迴圈下來,最大值在陣列的末尾。

2.因此外迴圈,從0到末尾,末尾每次變短一位。

3.如果剩下的都有序了呢?也就是不用再進行迴圈了,放置乙個flag,如果一直沒有交換,也就是flag值不變,即可跳出迴圈。

void

bubble_sort

(vector<

int>

&a)}

if(flag ==0)

break

;//全程無交換

}}

選擇排序(selection sort)

如果某個元素,位於正確的最終位置上,它不會被移動,選擇排序,每次交換一對元素,至少有乙個會被移動到最終位置上。

步驟在未排序的序列中,找到最小(大)的玄素。放入已排序序列的最後乙個位置

void

selection_sort

(vector<

int>

&a)swap

(a[minindex]

, a[i]);

}}

插入排序(insertion sort)步驟

從第乙個元素開始,該元素可以認為已經被排序

取出下乙個元素,在已排序序列中,從後向前比較,如果前一張比當前的大,將前一張,向後移

最後全部移動完,在當前位置放入取出的元素

void

insertion_sort

(vector<

int>

&a) a[i]

= temp;

}}

歸併排序(merge sort)

是「分治法」的典型應用

步驟

void

mergesort

(vector<

int>

&arr)

void

mergesort

(vector<

int>

&arr,

int l,

int r)

void

merge

(vector<

int>

&nums,

int l,

int m,

int r)

else

}while

(p1 <= mid) help[i++

]= nums[p1++];

while

(p2 <= r) help[i++

]= nums[p2++];

for(

int i =

0; isize()

; i++

)}

C 排序演算法整理

from 菜鳥程式設計 參考 十大經典排序演算法 include using namespace std template typename t 整數或浮點數皆可使用,若要使用類 class 或結構體 struct 時必須過載大於 運算子 一次冒泡 for int i 0 i len 1 i 氣泡排...

排序演算法整理 c語言

1.選擇排序 選擇排序就是找到它的最小元素,然後和第乙個元素交換,將最小元素放到它在有序表中的最終位置上。然後從第二個元素開始掃瞄列表,找到後面n 1個元素中的最小元素,再和第二個元素比較,這樣到最後就已經排完序了。其時間複雜度是 o n 2 附程式 選擇排序,2018.06.17 輸入亂序的陣列n...

排序 排序演算法整理

經常零零散散的用到排序演算法,將幾類常見的總結下來 時間複雜度o n 2 空間複雜度o 1 穩定排序 param arr public static void insersort int arr else arr j 1 tmp 氣泡排序 時間複雜度 o n 2 空間複雜度o 1 穩定排序 para...