查詢棧中最小元素,時間複雜度為0

2021-06-14 01:20:45 字數 1160 閱讀 3666

此程式實現了乙個查詢出棧中最小元素的時間複雜度為0的棧。

此函式在進棧出棧的時候都進行了判斷,

進棧時,若當前的元素小於之前的最小元素,則把當前元素記錄進該元素的最小元素中,並輸出更改最小元素的資訊。

出棧時,若當前的最小元素小於出棧後棧中的最小元素,則輸出更改最小元素的資訊。

**如下:

#include #include #include #define datatype char

typedef struct elemtype;

typedef struct stack;

void stack_init(stack &st , int stsize) // 初始化棧

void min_find(stack st , datatype &e) // 查詢棧中最小元素,時間複雜度為o

e = st.stelem[st.top].min;

}void stack_pop(stack &st , datatype &e) // 出棧

else

e = st.stelem[st.top].elem;

st.top--;

printf("pop elem '%c' succeed !\n",e);

if(flag) }}

void stack_push(stack &st , datatype e) // 出棧函式

st.top++;

st.stelem[st.top].elem = e;

st.stelem[st.top].min = (st.top == 0 ? e : st.stelem[st.top - 1].min);

printf("push new elem '%c' into stack succeed !\n",e);

if(st.stelem[st.top].min > e)

}void stack_free(stack &st) // 釋放申請的記憶體

void stack_test() // 此程式的測試函式

printf("\npoping from stack...\n");

while(s.top >= 0)

stack_free(s);

}int main()

如何用O 1 的時間複雜度求棧中最小元素

class stack def init self self.items def empty self return len self.items 0 def size self return len self.items def peek self if not self.empty return...

0 時間複雜度

快 時間複雜度 省 空間複雜度 def get sum n result 0 for i in range 1,n 1 result i return result假設每行 對應的cpu執行時間一樣,為乙個時間單位unit time 可以看到該函式第2 5行執行1次,第3 4行執行n次 總共執行時間...

時間複雜度為O n 的排序

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