當前位置:首頁 » 特色小吃 » 快排怎麼做好吃又簡單
擴展閱讀
崗杜街附近好吃的地方 2023-08-31 22:08:20
土豆不炒絲怎麼做好吃 2023-08-31 22:03:59

快排怎麼做好吃又簡單

發布時間: 2022-05-27 10:05:40

㈠ 關於快排,請問哪兒錯了

#include<iostream>
using namespace std;
void Qsort(int a[], int l, int r)
{int i=l,j=r;
a[0]=a[i];
if(l>=r) return ;
while(i!=j)
{
while(i<j&&a[j]>=a[0])
j--;
a[i]=a[j];
while(i<j&&a[i]<=a[0])
i++;
a[j]=a[i];
}
a[i]=a[0];
Qsort(a,l,i-1);
Qsort(a,i+1,r);
}

int main()
{
int a[100000],n,i;
cin>>n;
for (i=1;i<=n;i++)
{cin>>a[i];}
Qsort (a,1,n);
for (i=1;i<=n;i++)
{cout<<a[i]<<" ";}
system ("PAUSE");
EXIT_SUCCESS;
}

㈡ free pascal 快排。冒泡。 簡單講講思想和區別。穩定。時間復雜度。

二分排序就是快排

var
x:array[1..60000] of longint;
n,i:longint;
procere qsort(v1,v2:longint);
var
xkey,i,j,t:longint;
begin
i:=v1;j:=v2;xkey:=x[(i+j) div 2];
while i<j do
begin
while xkey>x[i] do inc(i);
while xkey<x[j] do dec(j);
if i<=j then
begin
t:=x[i];x[i]:=x[j];x[j]:=t;
inc(i);dec(j);
end;
end;
if v1<j then qsort(v1,j);
if i<v2 then qsort(i,v2);
end;
begin
readln(n);
for i:=1 to n do read(x[i]);
qsort(1,n);
for i:=1 to n do
writeln(x[i]);
end.

冒泡排序演算法的運作如下:
  1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
  3. 針對所有的元素重復以上的步驟,除了最後一個。
  4. 持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較

var a:array[1..10] of integer; i,j,t,n:integer;begin readln(n); for i:=1 to n do readln(a[i]); for j:=1 to n-1 do for i:=1 to n-j do if a[i]<a[i+1] then begin t:=a[i];a[i]:=a[i+1];a[i+1]:=t;end; for i:=1 to n do write(a[i]:6);end.

選擇排序每一趟從待排序的數據元素中選出最小(或最大)的一個元素,順序放在已排好序的數列的最後,直到全部待排序的數據元素排完。 選擇排序是不穩定的排序方法。(比冒泡排序用時少)var a:array[1..10] of integer; i,j,t:integer;begin for i:=1 to 10 do read(a[i]); for i:=1 to 9 do begin for j:=i+1 to 10 do if a[i]<a[j] then begin t:=a[i];a[i]:=a[j];a[j]:=t;end; end; for i:=1 to 10 do write(a[i]:5);end.插入排序的基本操作就是將一個數據插入到已經排好序的有序數據中,從而得到一個新的、個數加一的有序數據,演算法適用於少量數據的排序,時間復雜度為O(n^2)。是穩定的排序方法。歸並排序法是將兩個(或兩個以上)有序表合並成一個新的有序表,即把待排序序列分為若干個子序列,每個子序列是有序的。然後再把有序子序列合並為整體有序序列看我打了那麼多的份上 望採納~