📄 algoritm.txt
字号:
-------------------------------------------------------------------------------
Algorithm: Quicksort
O(f(n)): A(n)=n*lg(n)
..W(n)=n^2 (sorted!)
In-place: No.
Call: Quicksort(left,right,arr)
...
Code:
.Quicksort(left,right:integer;var arr:array[left..right] of integer);
. var m,i,j:integer;
.begin
. i:=left;
. j:=right;
. m:=arr[trunc((left+right)/2)]; (* arr[left],arr[right],... *)
. repeat
. while (arr[i]<m) do i:=i+1;
. while (arr[j]>m) do j:=j-1;
. if (i<=j) then begin
. swap(arr[i],arr[j]);
. i:=i+1;
. j:=j-1;
. end;
. until (i>j);
. if (left<j) then Quicksort(left,j,arr);
. if (i<right) then Quicksort(i,right,arr);
.end;
-------------------------------------------------------------------------------
Algorithm: Shellsort
O(f(n)): A(n)=
..W(n)=n^1.5
In-place: Yes
Call: Shellsort(n,arr)
Code:
.Shellsort(n:integer;var arr:array[1..n] of integer);
. var d,i,j:integer;
. flag:boolean;
.begin
. d:=n-1;
. while (d >= 1) do begin
. for i:=1 to n-d do begin
. j:=i;
. flag:=true;
. while flag do begin
..flag:=false;
..if (j>=1) then
.. if (arr[j]>arr[j+d]) then begin
.. swap(arr[j],arr[j+d]);
.. flag:=true;
.. j:=j-d;
.. end;
. end;
. end;
. d:=trunc(d/2);
. end;
.end;
-------------------------------------------------------------------------------
Algorithm: Mergesort
O(f(n)): A(n)=n*lg(n)
..W(n)=n*lg(n)
In-place: No
Call: Mergesort(left,right,arr)
Code:
.Mergesort(left,right:integer;var arr:array[left..right] of integer);
. var middle:integer;
.begin
. if (left < right) then begin
. middle:=trunc((left+right)/2);
. Mergesort(left,middle,arr);
. Mergesort(middle+1,right,arr);
. Merge(left,middle,middle+1,right,arr);
. end;
.end;
-------------------------------------------------------------------------------
Algoritm: Heapsort
O(f(n)): A(n)=n*lg(n)
..W(n)=2*(n-1)*lg(n)
In-place: Yes
Call: Heapsort(n,arr)
Code:
.Heapsort(n:integer;var arr:array[1..n] of integer);
. var i,heapsize,max:integer;
. fixheap(lower,element,upper:integer);
. (* Reestablish the heap property in the tree, the element to insert
. at position 'lower' is 'element',last index in heap is 'upper'.
. The heap property means that the element at index 'lower' should
. be the largest in the subtree it represents.
. *)
.begin
. (* heap construction *)
. for i:=trunc(n/2) to 1 step -1 do fixheap(i,arr[i],n);
. (* rearrange *)
. for heapsize:=n to 2 step -1 do begin
. max:=arr[1];
. fixheap(1,arr[heapsize],heapsize-1);
. arr[heapsize]:=max;
. end;
.end;
-------------------------------------------------------------------------------
Algoritm: Cardshuffling
O(f(n)): A(n)=n
..W(n)=n
In-place: Yes
Call: Shuffle(n,arr)
Code:
.Shuffle(n:integer;var arr:array[1..n] of integer)
. var i,j:integer;
.begin
. for i:=1 to n step 1 do arr[i]:=i; (* initiera *)
. for i:=n to 1 step -1 do begin (* do the shuffling *)
. j:=trunc(i*rnd)+1;
. swap(arr[j],arr[i]);
. end;
.end;
-------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -