题解 | #输入整型数组和排序标识,对其元素按照升序或降序进行排序#
输入整型数组和排序标识,对其元素按照升序或降序进行排序
http://www.nowcoder.com/practice/dd0c6b26c9e541f5b935047ff4156309
C++简单题解:
使用快排进行排序:选定一个基准数,从后往左找小于基准数的数,从前往后找大于基准数的数,直到两个指针碰头,最后基准数左右两边分别为大于、小于基准数的数。
#include<iostream> using namespace std; int quick(int a[],int i, int j) { int tmp=a[i]; while(i<j) { while(i<j&&tmp<=a[j]) j--; if(i<j) a[i++]=a[j]; while(i<j&&tmp>=a[i]) i++; if(i<j) a[j--]=a[i]; } a[i]=tmp; return i; } void sort(int a[], int i, int j) { if(i<j) { int t=quick(a,i,j); sort(a,i,t-1); sort(a,t+1,j); } } int main() { int n,flag; while(cin>>n) { int a[n]; for(int i=0; i<n; i++) cin>>a[i]; cin>>flag; sort(a, 0, n-1); if(flag) for(int i=n-1; i>=0; i--) cout << a[i] << " "; else for(int i=0; i<n; i++) cout << a[i] << " "; cout << endl; } return 0; }