實現排序演算法,時間複雜度為O n

2021-06-27 19:17:40 字數 1084 閱讀 8701

我們常用的排序氣泡排序 o(n^2); 快速排序o(nlogn);堆排序o(nlogn);選擇排序o(n^2);

我們常用的排序都不符合時間複雜度的要求;

經常聽說乙個說法  用空間代替時間

現在要排序的陣列為陣列 a;例如a陣列裡面有  1,1,2,2,3,3,2,2,5,5.........等等很多無序的數字

那麼我們申請乙個陣列b,假設a陣列當中的數字都在100一下;

那麼我們的b陣列只要申請b就可以了

void sortbyn(int a, int length)

//重新申請乙個陣列

const int n =200;

int b[n];

//把新申請的陣列全部初始化為0

for (int i = 0; i < n; ++i)

//遍歷a陣列

for (int i = 0; i < length; ++i)

int index = 0;

for (int i = 0; i < n; ++i) }

}

b陣列的大小是乙個常量,所以遍歷b陣列的時間複雜度是o(1);

完整測試**:

// sortbyn.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include using namespace std;

void sortbyn(int a, int length)

//重新申請乙個陣列

const int n =200;

int b[n];

//把新申請的陣列全部初始化為0

for (int i = 0; i < n; ++i)

//遍歷a陣列

for (int i = 0; i < length; ++i)

int index = 0;

for (int i = 0; i < n; ++i) }

}int _tmain(int argc, _tchar* argv)

; for (int i = 0; i < 10; ++i)

{ cout<

時間複雜度為O(n)的排序演算法

我們常用的幾種排序演算法,氣泡排序,選擇排序,它們已經是相對比較簡單,穩定的排序演算法了,但是它們時間複雜度為o n n 基本都要用到兩層迴圈,今天我就像大家介紹一種簡單,只用一層for迴圈,時間複雜度為o n 的排序演算法。樣例輸入 1 4 5 6 3 4 2 8 9 1 樣例輸出 1 1 2 3...

時間複雜度為on的排序演算法 演算法的時間複雜度理論

yishun 可計算性理論的理解 zhuanlan.zhihu.com 現在,我們來討論演算法執行的時間複雜度。表示以下函式集合 o g n 表示以下函式集合 表示以下函式集合 f n 或 o g n 表示f n 是 或 o g n 的成員。首先要明確輸入規模的概念,一般來說,它指編碼演算法輸入所需...

時間複雜度為O n 的排序

題目 某公司有幾萬名員工,請完成乙個時間複雜度為o n 的演算法對該公司員工的年齡作排序,可使用o 1 的輔助空間。分析 排序是面試時經常被提及的一類題目,我們也熟悉其中很多種演算法,諸如插入排序 歸併排序 氣泡排序,快速排序等等。這些排序的演算法,要麼是o n2 的,要麼是o nlogn 的。可是...