程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 快排

快排

編輯:C++入門知識

最近在看算法導論,就實現了一些簡單的算法!

核心是分治

首先先完成交換兩個值的函數,

然後完成分割操作

最後確定遞歸條件!


[cpp] int exchange(int A[],int i,int j) 

    int temp    = A[i]; 
    A[i]        = A[j]; 
    A[j]    = temp; 
    return 0; 

int Partion(int A[],int p,int r) 

    int x= A[r]; 
 
    int i = p-1; 
 
    for (int j = p; j < r; j++) 
    { 
        if (A[j]<=x) 
        { 
            i = i+1; 
            exchange(A,i,j); 
        } 
    } 
    exchange(A,i+1,r); 
    return i+1; 

 
void QuickSort(int A[],int p,int r) 

    if (p<r-1) 
    { 
        int q = Partion(A,p,r); 
        QuickSort(A,p,q-1); 
        QuickSort(A,q+1,r); 
    } 

int exchange(int A[],int i,int j)
{
 int temp = A[i];
 A[i]  = A[j];
 A[j] = temp;
 return 0;
}
int Partion(int A[],int p,int r)
{
 int x= A[r];

 int i = p-1;

 for (int j = p; j < r; j++)
 {
  if (A[j]<=x)
  {
   i = i+1;
   exchange(A,i,j);
  }
 }
 exchange(A,i+1,r);
 return i+1;
}

void QuickSort(int A[],int p,int r)
{
 if (p<r-1)
 {
  int q = Partion(A,p,r);
  QuickSort(A,p,q-1);
  QuickSort(A,q+1,r);
 }
}

 

測試快排的代碼:
[cpp] int A[10]={2,3,4,5,6,7,8,9,0,1}; 
 
QuickSort(A,0,9); 
 
    for (int i = 0; i <10; i++) 
    { 
        cout<<A[i]<<"\t"; 
    } 
    cout <<endl; 

int A[10]={2,3,4,5,6,7,8,9,0,1};

QuickSort(A,0,9);

 for (int i = 0; i <10; i++)
 {
  cout<<A[i]<<"\t";
 }
 cout <<endl;

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved