根据《算法导论》第七章,写了代码如下:// QuickSort.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <fstream> using namespace std; #define N 1000 void quickSort(int* a,int p, int r); int partition(int *a, int p, int r); int main(int argc, char* argv[]) { int n; int a[N]; ifstream fin("QuickSortData.in");//可以自定义的文件 ofstream fout("QuickSortOutput.out"); if(!fin) { cout<<"输入数据文件打开失败/n"; exit(1); } fin>>n; cout<<"The array is : /n"; for( int k=0 ; k<n ; k++ )//打印输入数据 { fin>>a[k]; cout<<a[k]<<'/t'; } fin.close(); quickSort(a,0,n-1);//数组作为参数的传递:传递数组名字,作为指针传递 if(!fout) { cout<<"输出数据文件创建失败/n"; exit(1); } for( int i=0 ; i<n ; i++ ) { cout<<a[i]<<'/t'; fout<<a[i]<<'/t'; } return 0; } int partition(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++; int temp=a[j]; a[j]=a[i]; a[i]=temp; } } int tempp=a[r]; a[r]=a[i+1]; a[i+1]=tempp; return i+1; } void quickSort(int* a,int p, int r) { if(p<r) { int q=partition(a,p,r);//注意数组参数的传递 quickSort(a,p,q-1); quickSort(a,q,r); } }