PASCAL似乎是一種氣泡演算法

發布 社會 2024-02-09
15個回答
  1. 匿名使用者2024-02-05

    一、鼓泡法分選。

    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

  2. 匿名使用者2024-02-04

    氣泡排序 [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. 匿名使用者2024-02-03

    3個變數就足夠了,有一種演算法可以讓你在不新增變數的情況下交換兩個變數的值。

  4. 匿名使用者2024-02-02

    這才是真正的冒泡:

    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.

  5. 匿名使用者2024-02-01

    房東的計畫是錯誤的選擇型別。

    如果將 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;

  6. 匿名使用者2024-01-31

    堆疊飄過。

    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;雖然**有點像,但意思卻完全不同。

  7. 匿名使用者2024-01-30

    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.

  8. 匿名使用者2024-01-29

    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

  9. 匿名使用者2024-01-28

    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

    你是初學者,努力學習,獨立思考,喜歡你一般問的問題,沒有人喜歡浪費時間去回答,我閒著,我性格長!

  10. 匿名使用者2024-01-27

    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

  11. 匿名使用者2024-01-26

    有一本書叫:全國青少年資訊學奧林匹克培訓教材。 你的學校圖書館應該有的書,是帕斯卡的。

  12. 匿名使用者2024-01-25

    BST 是乙個二進位查詢樹,乙個節點的權重,大於其左子權重,小於右子權重。 這樣,如果它是乙個平衡的二叉樹,那麼在二叉樹中搜尋乙個值的複雜度為log2(n),n是節點數。

    其實很簡單,就是插入、刪除、查詢三個操作。 理想的複雜度是 log2(n)。

    這一切都在書中。

    BST 沒有多大意義,因為如果它退化為鏈,複雜度就會變成 n。

    建議看一下平衡樹,類似於 sopen 什麼的。

  13. 匿名使用者2024-01-24

    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.

  14. 匿名使用者2024-01-23

    簡單的回溯:

    這個**是我編的,就過去了:

    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.你應該能夠理解它!!

  15. 匿名使用者2024-01-22

    這是全置換的變體,與全置換非常相似,我會直接寫給你。

    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

相關回答
4個回答2024-02-09

Pascal編譯系統是乙個系統軟體。 Pascal 是第一種結構化程式設計語言,具有嚴格的語法、清晰的層次結構、易於編寫和可讀的程式。 Pascal語言廣泛應用於各種軟體中,程式分為名稱(程式後自提)、設定(var後定義)、開始(begin)、程式(body)、read(讀read ln)、結束(end),結構層次分明,嚴謹嚴密。 >>>More

4個回答2024-02-09

我不敢做noi大師,但我參與過noip。

val(copy(s,pos('=',s)+1,pos(' ',s)-pos('=',s)-1),p,t); >>>More

6個回答2024-02-09

參考樓上,但樓上不知道那不加語句?

var i,d:longint; >>>More