输入代码:
//算法分析 //1)设置两个变量I、J,排序开始的时候:I=0,J=N-1; //2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0]; //3)从J开始向前搜索,即由后开始向前搜索(J=J-1即J--),找到第一个小于key的值A[j],A[j]与A[i]交换; //4)从I开始向后搜索,即由前开始向后搜索(I=I+1即I++),找到第一个大于key的A[i],A[i]与A[j]交换; //5)重复第3、4、5步,直到 I=J; (3,4步是在程序中没找到时候j=j-1,i=i+1,直至找到为止。找到并交换的时候i, j指针位置不变。另外当i=j这过程一定正好是i+或j-完成的最后另循环结束。) #include <iostream> using namespace std; void Quicksort(int a[],int low,int high) { if(low>=high) { return ; } int first=low; int last=high; int key=a[first]; while(first<last) { while(first < last && a[last] >= key) { --last; } a[first] = a[last]; while(first < last && a[first] <= key) { ++first; } a[last]=a[first]; } a[first]=key; Quicksort(a,low,first-1); Quicksort(a,last+1,high); } int main() { int i,a[100],x,n=0; cin>>n; for(i=0; i<n; i++) cin>>a[i]; Quicksort(a,0,n-1); for(i=0; i<=n-1; i++) cout<<a[i]<<" "; cout<<endl; return 0; }
运行结果:
时间: 2024-11-04 13:05:07