题解 | #输入整型数组和排序标识,对其元素按照升序或降序进行排序#
输入整型数组和排序标识,对其元素按照升序或降序进行排序
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;
}
深信服公司福利 731人发布