-
一、鼓泡法分選。
for i:=1 to n-1 do
for j:=n downto i+1 doif a[j]a[j]
then k:=j;
if i<>k
then begin t:=a[i];
a[i]:=a[k];
a[k]:=t
endend;
3.插入方式排序。
for i:=2 to n do
begin x:=a[i];
j:=i-1;
while (j>0) and (a[j]>x) dobegin a[j+1]:=a[j];
j:=j-1
end;a[j+1]:=x
end;四、合併法排序。
i:=1;j:=1;
k:=1;while (i<=m) and (j<=n) dobegin if a[i]<=b[j]
then begin c[k]:=a[i];
i:=i+1
endelse begin c[k]:=b[j];
j:=j+1
end;k:=k+1
end;while i<=m do
begin c[k]:=a[i];
i:=i+1;
k:=k+1
end;while j<=n do
begin c[k]:=b[j];
j:=j+1;
k:=k+1
end;五、快速方法排序。
procedure quicksort(a,m,n);
begin i:=m;
j:=n;x:=a[m];
while i=x) and (j>i) do j:=j-1;
if j>i
then begin a[i]:=a[j];
i:=i+1;
while (a[i]<=x) and (iif ij:=j-1
endend
end;a[i]:=x;
if mif j+1
-
氣泡排序 [n 個 (n<1000),從大到小。 ]:
program maopao;
var a:array[1..1000]of integer;
n,i,j,b:integer;
beginreadln(n);
for i:=1 ton do
readln(a[i]);
for i:=n downto 1 do
for j:1 to i do
if a[j]beginb:=a[j];
a[j]:=a[j+1];
a[j+1]:=b;
end;for i:=1 to n do
writeln(a[i]);
end.但這個問題不需要冒泡。
只有三個變數:
program t1;
var a,b,c:integer;
beginreadln(a,b,c);
if aif celse writeln(b,a,c);
end.
-
3個變數就足夠了,有一種演算法可以讓你在不新增變數的情況下交換兩個變數的值。
-
這才是真正的冒泡:
program pansy;
var a:array[1..4]of longint;i,j,t:longint;
beginfor i:=1 to 4 do read(a[i]);
for i:=1 to 3 do
for j:=1 to 4-i do
if a[j]begin
t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t;
end;for i:=1 to 4 do write(a[i],' ');
end.
-
房東的計畫是錯誤的選擇型別。
如果將 j:=1 更改為 4 do to for j:=i+1 to 4 do,則可以從小到大排序。
氣泡分揀機如下。
for i:=n-1 downto 1 dofor j:=1 to i do
if a[j]begin
temp:=a[j];
a[j]:=a[j+1];
a[j+1]:=temp
end;
-
堆疊飄過。
t 在哪裡定義?
對於 j:=1 到 4 執行 對於 j:=i+1 到 4 真正的冒泡:
for i:=1 to 4 do
for j:=1 to 4-i do
if a[j]>a[j+1] then
begint:=a[i];a[i]:=a[j];a[j]:=t;
end;雖然**有點像,但意思卻完全不同。
-
program ti132;
var x:array[1..100]of integer;
s,i,j,n:integer;
beginrandomize;(要啟用銀,要生成隨機數,您必須使用)對於 i:= 1 到 20 do
x[i]:=trunc(random(900))+100;(random(n) 產生從 0 到 n 的隨機實數)。
for s:=1 to 19 do
for j:=s+1 to 20 do
if x[s]>x[j] then beginn:=x[s];
x[s]:=x[j];
x[j]:=n;
end;for i:=1 to 20 do write(x[i],' ');
writeln;
readln;
end.
-
program xx18;
vara:array[1..20]of integer;
i,j,l:integer;
beginrandomize;
for i:=1 to 20 do
a[i]:=random(99)+1;
for i:=1 to 19 do
for j:=1 to 20-i do
if a[j]>a[j+1] then
beginl:=a[j];
a[j]:=a[j+1];
a[j+1]:=l;
end;for i:=1 to 20 do
if a[i]<>a[i+1] then write(a[i]:3);
writeln;end.
3 4 2 2 3 1 2(第三大)。
2 2 4 1 1 3 (第二大) 3
1 1 1 4(最大) 4 4 4
-
1 All for 迴圈應該這樣寫:
for i:=1 to n-1 do
for j:=i+1 to n do
……你都寫錯了,頭暈!! )
您的應付賬款的初始值為:n 以外的數字;
但我建議你最好定義乙個 x:integer 而不是 a[er]!
vari,j,x,n:integer;
a:array[1..1000] of integer;
beginreadln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]begin
x:=a[i]; a[i]:=a[j]; a[j]:=x;
end;for i:=1 to n do
write(a[i],' ');
end.這個程式把陣列從大到小排列,n是有多少個數字,如果要輸入10個數字,則n=10
你是初學者,努力學習,獨立思考,喜歡你一般問的問題,沒有人喜歡浪費時間去回答,我閒著,我性格長!
-
a[er]:=a[j]; a[j]:=a[j+1];a[j+1]:=a[er] ;
它應該改為 er:=a[i]; a[i]:=a[j];a[j]:=er;
要新增點 o( o
-
有一本書叫:全國青少年資訊學奧林匹克培訓教材。 你的學校圖書館應該有的書,是帕斯卡的。
-
BST 是乙個二進位查詢樹,乙個節點的權重,大於其左子權重,小於右子權重。 這樣,如果它是乙個平衡的二叉樹,那麼在二叉樹中搜尋乙個值的複雜度為log2(n),n是節點數。
其實很簡單,就是插入、刪除、查詢三個操作。 理想的複雜度是 log2(n)。
這一切都在書中。
BST 沒有多大意義,因為如果它退化為鏈,複雜度就會變成 n。
建議看一下平衡樹,類似於 sopen 什麼的。
-
varbegin...建立鍊表。
p:=head^.next;頭部指標位址。
q:=head;
while p<>nil do
beginif p^.data=q^.data thenbeginq^.next:=p^.next;
dispose(p);
p:=q^.next;
end;刪除重複的節點(將資料域作為比較物件) elsebegin
q:=p;p:=p^.next;
end;如果不一樣,就往下走。
end;..你想要的核心已經完成了。
end.
-
簡單的回溯:
這個**是我編的,就過去了:
const max=9;
var m,n :longint;
a:array[1..max] of longint;
procedure work(j,k:longint);j 是列舉的第 j 位數字,k 是最後乙個列舉值。
var i :longint;
beginif j=m+1 then
beginfor i:=1 to m-1 do write(a[i],' ');輸出。
writeln(a[m]);
endelse
對於 i:=k+1 到 n-m+j do 第 i 個範圍是這樣的,k+1 很容易理解,n-m+j 可以用數學證明。 例 8 3,則第乙個最大範圍為 1 6,第二個最大範圍為 2 7、3 8,依此類推。
begina[j]:=i;
work(j+1,i);回溯。
end;end;
beginreadln(n,m);
work(1,0);
end.你應該能夠理解它!!
-
這是全置換的變體,與全置換非常相似,我會直接寫給你。
procedure try(d:integer);
var i,j,k:integer;
beginif d=n+1 then
beginfor i:=1 to n do
write(a[i]);
end else
beginfor i:=1 to m do
if bj[i]=false then
beginbj[i]:=true;
a[n]:=i;
try(n+1);
bj[i]:=false;
end;end;
end;read(m,n);
try(1);
這個幾乎是偽**,看差不多。
BJ 是句子,A 是 DAAN
Pascal編譯系統是乙個系統軟體。 Pascal 是第一種結構化程式設計語言,具有嚴格的語法、清晰的層次結構、易於編寫和可讀的程式。 Pascal語言廣泛應用於各種軟體中,程式分為名稱(程式後自提)、設定(var後定義)、開始(begin)、程式(body)、read(讀read ln)、結束(end),結構層次分明,嚴謹嚴密。 >>>More
我不敢做noi大師,但我參與過noip。
val(copy(s,pos('=',s)+1,pos(' ',s)-pos('=',s)-1),p,t); >>>More