pascal選擇排序問題

時間 2022-12-13 12:15:02

1樓:匿名使用者

i<>j是優化,這個不用說,很簡單。

至於begin

temp:=a[i];

a[i]:=a[k];

a[k]:=temp;

end;更簡單,這個幾乎排序都要有的交換過程。

這個temp過程是必要的。

因為你的a[i]已經被a[k] 賦值了,就是a[i]=a[k],反過來賦值沒有意義,打個比方,a杯子有果汁,b杯子裡有可樂,你要把果汁放進b裡,把可樂放進a裡,那麼必須有個c杯子先把a的果汁倒進c裡,然後吧b中的可樂倒進a中,然後再把c中的果汁到進b裡,而程式中temp就是充當這個c杯子的角色。

2樓:匿名使用者

此程式有錯誤。

如果輸入的資料是。

輸出的結果就是4 5 8 8 5 12 6 21 12 55並沒有成功排序。

而且這個程式執行效率似乎並不高。我在程式中新增了一個計數器變數x,經過統計,在排序過程中,大小數的交換上有45次之多。(以上述資料測試而得)

這是完整程式:

const n=10;

var x,i,j,k,temp:integer;

a:array [1..n] of integer;

beginfor i:=1 to n do readln(a[i]);

write('array:')

for i:=1 to n do write(a[i]:3);

readln;

x:=0;for i:=1 to n-1 do

begink:=i;

for j:=i+1 to n do

beginif a[k]>a[j] then k:=j;

if i<>j then

begintemp:=a[i];

a[i]:=a[k];

a[k]:=temp;

inc(x);

end;end;

end;write('after sort:')

for i:=1 to n do write(a[i]:3);

writeln;

writeln('jiaohuan:',x);

readln;

end.經過修改後,我的程式可以正確排序,並且交換次數只有12次。(仍以上述資料測試而得)

修改後的程式:

const n=10;

var x,i,j,k,temp:integer;

a:array [1..n] of integer;

beginfor i:=1 to n do readln(a[i]);

write('array:')

for i:=1 to n do write(a[i]:3);

readln;

x:=0;for i:=1 to n-1 do

begink:=i;

for j:=i+1 to n do

beginif a[k]>a[j] then

begintemp:=a[j];

a[j]:=a[k];

a[k]:=temp;

inc(x);

end;end;

end;write('after sort:')

for i:=1 to n do write(a[i]:3);

writeln;

writeln('jiaohuan:',x);

readln;

end.

3樓:要你命三千之趙

i<>j 優化程式撒,如果相等取的同一個數,就不用交換了a[k]:=temp;怎麼能不要呢?你還要用這個中間數繼續和下面沒排序的數進行比較呢。

你是雙迴圈啊,下面跑 for j:=i+1 to n dobegin

if a[k]>a[j] then k:=j;

if i<>j then

begintemp:=a[i];

a[i]:=a[k];

a[k]:=temp;

end;end;

這個迴圈的時候,k還沒賦值呢,跑玩一次迴圈,才變的。

pascal問題,pascal 問題

你錯在寫的程式太長了。program asfl vars string i,j,b longint a array 1.10 of longint begin readln s i 1 j 1 while ibegin inc i if s i then delete s,i,1 end for i...

求pascal精簡的堆排序演算法程式

孩子,用快排吧 這是最快的 程式1 program kspv const n 7 type arr array 1.n of integer vara arr i integer procedure quicksort var b arr s,t integer var i,j,x,t1 integ...

pascal問題,pascal是什麼?

pascal是什麼?pascal是一個多義詞,所代表的意思分別是 1 pascal指的是結構化程式語言 pascal的名稱是為了紀念十七世紀法國著名哲學家和數學家blaise pascal而來的,它由瑞士niklaus wirth教授於六十年代末設計並創立的。2 pasca指的是壓力的國際標準單位 ...