-
vari,j:integer;
n:integer;
a:array[1..maxint] of string;
k:string;
beginread(n);
for i:=1 to n do readln(a[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if ifor i:=1 to n do
writeln(a[i]);
end.瞭望塔的主人,絕對正確(不管有多少)。
-
pascal 中的字串可以在大小上進行比較。
-
如果它是全大寫或全小寫的字串,則非常簡單。
只需按排序演算法排序(只需將原始資料型別從整數更改為字串即可)。
使用字元陣列來執行此操作"按字典順序輸出字串"它要複雜得多,因此建議改用字串。
-
var a:array[0..10000] of string;
n,i:longint;
procedure sort(i1,j1:longint);
var i,j:longint;
n,s:string;
begini:=i1;
j:=j1;
n:=a[(i+j) div 2];查詢參考以比較重複次數
while a[i]n do dec(j);
if i<=j then
begins:=a[i];a[i]:=a[j];a[j]:=s;交易所 Inc(I); dec(j);
end;until i>j;
if iif i1end;
開始檔案。
readln(n);讀取的字串數,記得換行(換行也是字元)為 i:=1 到 n do readln(a[i]); 讀取 N 個字串。
sort(1,n);快速排序。
for i:=1 to n do writeln(a[i]);輸出 N 個字串。
檔案輸出。 end.
-
實際上,該方法與選擇順序相同。
-
快速划船,字串與普通資料相同。
-
main()
if(p!=i)
puts(cs[i]);printf("");
在此程式的第乙個 for 語句中,使用 gets 函式輸入五個名稱字串。 如上所述,C 語言允許將乙個二維陣列視為多個一維陣列,這個程式解釋了 cs[5][20] 是乙個二維字元陣列,它可以分為五個一維陣列 cs[0]、cs[1]、cs[2]、cs[3] 和 cs[4]。因此,在 gets 函式中使用 cs[i] 是合法的。
在第二個 for 語句中,另乙個 for 語句巢狀以形成雙迴圈。 此雙迴圈按字母順序完成工作。 在外部迴圈中,將名稱字串從字元陣列 cs[i] 複製到陣列 st,並將下標 i 分配給 p。
進入內迴圈後,將 CS[I] 後面的字串與 st 進行比較,如果有小於 st 的東西,則將字串複製到 ST 中,並將其下標分配給 P。 內部迴圈完成後,如果 p 不等於 i,則有乙個比 cs[i] 更小的字串,因此交換了 cs[i] 和 st 的內容。 至此,陣列 cs 的第 i 個元素的排序值已經確定。
然後輸出該字串。 外迴圈完成後,所有排序和輸出完成。
-
快速排序是對氣泡排序的改進。 其基本思想是:通過躺式排序將待排序的資料分成兩個獨立的部分,一部分的所有資料都小於另一部分的所有資料,然後根據二級方法對兩部分資料進行快速排序,整個排序過程可以遞迴進行, 從而實現整個資料成為有序序列。
假設要排序的陣列是 a[1] ......a[n],首先選擇任意乙個資料(通常是第乙個資料)作為關鍵資料,然後把所有大於它的數字放在它的前面,把所有大於它的數字放在它後面,這個過程稱為躺著的快速排序。 說謊快速排序的演算法是:
1)在排序開始時設定兩個變數i和j,i:=1和j:=n;
2)取第乙個陣列元素作為關鍵資料,給x賦值,即x:=a[1];
5)重複步驟,直到i>j;
詳細過程示例如下:
原始順序:[26 5 37 1 61 11 59 15 48 19]。
我:[19 5 15 1 11] 26 [59 61 48 37]。
II: [11 5 15 1] 19 26 [59 61 48 37]。
三:[1 5] 11 [15] 19 26 [59 61 48 37]。
IV:1 5 11 [15] 19 26 [59 61 48 37]。
V:1 5 11 15 19 26 [59 61 48 37]。
xx: 1 5 11 15 19 26 [37 48] 59 [61]。
七:1 5 11 15 19 26 37 48 59 [61]。
八: 1 5 11 15 19 26 37 48 59 61
快速排序方法是所有排序方法中最快、最有效的。 操作步驟如下:
var a:array[0..10] of integer;
n:integer;
procedure qsort(l,r:longint);
var i,j,m:longint;
beginm:=a[l];
i:=l;j:=r;
repeat
while a[i]m do dec(j);
if i<=j then begin
a[0]:=a[i];
a[i]:=a[j];
a[j]:=a[0];
inc(i);
dec(j);
end;until i>j;
if lif iend;
beginfor n:=1 to 10 do read(a[n]);
qsort(1,10);
for n:=1 to 10 do write(a[n]:4);
end.
-
你認為這是帕斯卡自己的字串的比較嗎? 樓上完全不合時宜! 對於快速排列,好像沒有,至少結果應該在o(n 3)以下(可以使用氣泡,應該是最簡單的,因為字串太長,無法將26的基數轉換為十進位整數,只能不斷與相鄰的兩個字串程式碼襯衫進行比較, 然後交換它,也可以使用 n 關鍵字進行排序,並將每個位的字母變成乙個整數陣列:
array[1..length(st),1..n] of shortint;還可以然後依次對每個位進行排序、、但建議使用冒泡,因為快速排列的程式很長,對禪宗的優秀模型也很麻煩、、
-
通常使用第三項。
1.逐字節迴圈比較(使用快速行)。
2 轉換為 26 十進位數比較。
3 快速行直接比較(A 字串> B 字串),然後是 A 字典順序 B(示例:'aa'<'ab','aa'<'db','問題A中的字典順序一般是用演算法計算的,沒有特殊的排序問題;
-
以同樣的方式,轉換為 Asker 程式碼並快速將行轉換為字元。
百家姓是寫在宋代的,因為宋朝的皇帝姓趙,所以當初寫的就是趙。 其他姓氏不是按權力或數字排名的,而是發音流暢。 舊百姓的末尾是百姓的末尾。