第二题:数组排序
描述: 用户输入有符号整型数组(十进制),去掉重复值后,按照升序输出整型数组(十进制)。
输入: 整数N,表示数组的个数;N个整数,整数之间以空格隔开
输出: 去掉重复后,按照升序输出数组
样例输入:
4 6 3 3 9
样例输出:
3 4 6 9
#include<iostream>
#include<string>
using namespace std;
void quickSort(vector<int>&a,int l,int r)
{
if(l<r)
{
int i=l,j=r-1;
int tmp=a[i];
while(i<j)
{
while(i<j&&a[j]>tmp)j--;
if (i<j)
{
a[i++]=a[j];
}
while(i<j&&a[i]<tmp)i++;
if (i<j)
{
a[j--]=a[i];
}
}
a[i]=tmp;
quickSort(a,l,i);
quickSort(a,i+1,r);
}
}
int main()
{
string str,tmpStr;
getline(cin,str);
vector<int>array;
int len=str.size();
int j=0;int i;
for( i=0;i<len;)
{
while(i<len&&str[i]!=' ')
i++;
while(j<i)
{
tmpStr+=str[j];
j++;
}
array.push_back(atoi(tmpStr.c_str()));
i++;
j=i;
tmpStr.clear();
}
/* 快速排序 ; */
int l=0;int r=array.size();
quickSort(array,l,r);
/*输出;*/
for (int k=0;k<r;)
{
int index=k+1;
while(index<r&&array[index]==array[k])
{
index++;
}
cout<<array[k]<<" ";
k=index;
}
cout<<endl;
system("pause");
}