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

2021-09-01 17:36:27 字數 705 閱讀 9552

我們常用的幾種排序演算法,氣泡排序,選擇排序,它們已經是相對比較簡單,穩定的排序演算法了,但是它們時間複雜度為o(n*n),基本都要用到兩層迴圈,今天我就像大家介紹一種簡單,只用一層for迴圈,時間複雜度為o(n)的排序演算法。

樣例輸入:1 4 5 6 3 4 2 8 9 1

樣例輸出:1 1 2 3 4 4 5 6 8 9

#includeconst int n=10;

//函式宣告

void input(int *arr,int n); //輸入陣列元素

void sort(int *arr,int n,int arr2); // 排序演算法

void output(int *arr,int n,int arr2); //輸出陣列

int main();

int a2[n]=; //定義乙個陣列初始化為0,用來按序儲存原始陣列各個元素的個數

input(a,n);

printf("排序後為: ");

sort(a,n,a2);

output(a,n,a2);

}void input(int *arr,int n)

{ printf("請輸入數字陣列: ");

for(int i=0;i0){ //陣列元素不為0,表示該位置存的有元素

for(int j=0;j此演算法也可以很好的解決陣列元素重複的問題。

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

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

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

我們常用的排序氣泡排序 o n 2 快速排序o nlogn 堆排序o nlogn 選擇排序o n 2 我們常用的排序都不符合時間複雜度的要求 經常聽說乙個說法 用空間代替時間 現在要排序的陣列為陣列 a 例如a陣列裡面有 1,1,2,2,3,3,2,2,5,5.等等很多無序的數字 那麼我們申請乙個陣...

時間複雜度為O n 的排序

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