樹狀陣列 之 氣泡排序(詳細分析)

2021-10-08 14:25:44 字數 1431 閱讀 7268

clj 想起當年自己剛學氣泡排序時的經歷,不禁思緒萬千

當年,clj 的氣泡排序(偽)**是這樣的:

flag=

false

while

(not flag)

: flag=

true

for i =

0 to n-2:

if a[i+1]

< a[i]

: swap a[i]

, a[i+1]

flag=

false

現在的 clj 想知道氣泡排序究竟有多慢,所以在(偽)**的第三行下面加入了這

麼一句:

printf(「ljs nb\n」);

但是隨著需要排序的 個數越來越多,這個程式的速度已經不能滿足 clj 的耐心了

他想請你幫忙算出這個程式到底能輸出多少行ljs nb

輸入格式

第一行乙個數 ,表示 陣列有 個數;

接下來一行共 個數,用空格隔開,表示 陣列的每乙個元素。

輸出格式

一行乙個整數,表示這個程式會輸出多少行 ljs nb。

樣例

輸入樣例1

51 5 3 8 2

輸出樣例1

4

#include

#include

using

namespace std;

const

int m=2*

1e6+5;

int discre[m]

,bit[m]

,a[m]

;int n;

void

discretetion()

sort

(discre+

1,discre+

1+n)

;int tot=

unique

(discre+

1,discre+

1+n)

-discre-1;

for(

int i=

1;i<=n;i++)}

long

long

lowbit

(int x)

void

update

(int x)

}long

long

sum(

int x)

return tot;

}int

main()

printf

("%lld"

,tmax+1)

;return0;

}

C 陣列 詳細分析

c 陣列 詳細分析 摘自 1 陣列下標 1 在定義時必須明確。只能用正整數或const常量,靜態或全域性變數不可以 例如 const int length 5 int array length 特 在new時可以用變數做下標。例如 int array new int variable 2 在初始化時...

C 陣列 詳細分析

1 陣列下標 1 在定義時必須明確。只能用正整數或const常量,靜態或全域性變數不可以 例如 const int length 5 int array length 特 在new時可以用變數做下標。例如 int array new int variable 2 在初始化時 一維陣列,可略 例如 i...

歸併排序詳細分析

通過定義兩個儲存空間,第乙個儲存空間為使用者輸入的陣列段。在第乙個儲存空間中每次分組比較,然後將結果排入第二個儲存空間中。週期結束後兩個儲存空間交換。從菜鳥教程學習的這個演算法,菜鳥教程中歸併排序有兩個實現方法 乙個是迭代,乙個是遞迴。這裡我主要針對迭代分析。void merge sort int ...