演算法 O n 2 排序演算法的效率比較

2022-06-02 05:48:08 字數 1345 閱讀 3017

選擇、插入排序

main.cpp

1 #include 3 #include "

sorttesthelper.h"4

5using

namespace

std;

67 template8

void selectionsort(t arr,int

n) 16}

1718 template19

void insertionsort(t arr,int

n)27}28

29int

main()

sorttesthelper.h

1 #include 2 #include 3 #include 4 #include 56

using

namespace

std;78

namespace

sorttesthelper

1718

int *generatenearlyorderedarray(int n, int

swaptimes)

28return

arr;29}

3031 template32

void printarray(t arr,int

n)38

39 template40

bool issorted(t arr,int

n)46 template47

void testsort(const

string &sortname,void (*sort)(t,int),t arr,int

n)59 }

結果

插入排序快的原因

氣泡排序

方法1

1 template2

void bubblesort( t arr , int

n)14

15//

優化, 每一趟bubble sort都將最大的元素放在了最後的位置

16//

所以下一次排序, 最後的元素可以不再考慮

17 n --;

1819 }while

20 }

方法2

1 template2

void bubblesort2( t arr , int

n)15 n =newn;

16 }while(newn > 0

);17 }

優化三種o(n^2)級別演算法的思路:

時間複雜度比較

分數線劃定(o n 2 排序演算法)

description 世博會志願者的選拔工作正在 a 市如火如荼的進行。為了選拔最合適的人才,a市對所有報名的選手進行了筆試,筆試分數達到面試分數線的選手方可進入面試。面試分數線根據計畫錄取人數的150 劃定,即如果計畫錄取m名志願者,則面試分數線為排名第 m 150 向下取整 名的選手的分數,而...

整數奇偶數排序(o n 2 排序演算法)

description 給定10個整數的序列,要求對其重新排序。排序要求 1.奇數在前,偶數在後 2.奇數按從大到小排序 3.偶數按從小到大排序。input 輸入一行,包含10個整數,彼此以乙個空格分開,每個整數的範圍是大於等於0,小於等於100。output 按照要求排序後輸出一行,包含排序後的1...

O N 2 排序演算法分析 選擇排序和插入排序

基本思想 每次遍歷陣列,找到當前陣列中最小的乙個元素,與第乙個元素調換位置。第一次排序 遍歷8個元素,找到當前陣列中最小元素2,與第乙個元素調換,此時,2現在的位置就是其最終的位置 第二次排序 從第二個元素開始遍歷,找到最小的元素4,與第二個元素8對調位置 第三次排序最小的元素時5,與當前位置對換,...