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 ...