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

根據算法導論寫的快速排序

編輯:C++入門知識

算法導論上面說在選取基准元素是取得最後一個,我用的數據結構課本上面是取第一個;
不過沒有原理都是一樣的;通過Qartion(int a[],int l,int r)函數將數組a中元素劃分為三部分,比a[r]小的,比a[r]大的,a[r];www.2cto.com
最後返回基准元素所在的位置;
[cpp] 
#include <stdio.h> 
#include <iostream> 
#include <string.h> 
#include <algorithm> 
#include <math.h> 
using namespace std; 
 const int N=99; 
  int Qartion(int a[],int l,int r) 
 { 
  int tmp=a[r]; 
   int i=l-1; 
   for(int j=l;j<=r-1;j++) 
   { 
    if(a[j]<=tmp) 
    { 
     i++; 
     swap(a[i],a[j]); 
    } 
   } 
   swap(a[i+1],a[r]); 
   return i+1; 
 } 
 void Qsort(int a[],int l,int r) 
 { 
  if(l<r) 
  { 
    int p=Qartion(a,l,r); 
    Qsort(a,l,p-1); 
    Qsort(a,p+1,r); 
  } 
 } 
 int main() 
 { 
      int n; 
      while(~scanf("%d",&n)) 
      { 
         int a[100]; 
         for(int i=0;i<n;i++) 
         { 
          cin>>a[i]; 
         } 
         Qsort(a,0,n-1); 
         for(int i=0;i<n;i++) 
         { 
          cout<<a[i]<<" "; 
         } 
         cout<<endl; 
      } 
     return 0; 
 } 
作者:Java_beginer1

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