题意: '5'把字符串分隔成数字, 输出这些数字的排序顺序
分析: 字符串处理 + 快排
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
#include <cmath>
#include <vector>
#include <iomanip>
#include <algorithm>
//#include "myAlgorithm.h"
#define MAXL 100005
#define INF 1e8
using namespace std;
int n;
int a[MAXL];
int partion(int low, int high){
int key = a[low];
while(low < high){
while(low < high && key <= a[high]){
high--;
}
swap(a[low], a[high]);
while(low < high && key >= a[low]){
low ++;
}
swap(a[low], a[high]);
}
return low;
}
void quickSort(int low, int high){
if(low < high){
int mid = partion(low, high);
quickSort(low, mid -1);
quickSort(mid + 1, high);
}
}
char str[2005];
void makeList(){
n = 0;
int i = 0, len = strlen(str);
int temp = 0;
bool blank = true;
for(int j = 0; j < len; j++){
if(str[j]!= '5'){
blank = false;
temp = temp * 10 + (str[j] - '0');
if(j == len - 1){
a[n++] = temp;
}
}
if(str[j] == '5' && blank == false){
a[n++] = temp;
temp = 0;
blank = true;
}
}
}
int main()
{
///freopen("in.txt","w",stdout);
while(gets(str)){
makeList();
quickSort(0, n - 1);
for( int i = 0; i < n - 1; i++){
cout<<a[i]<<" ";
}cout<<a[n-1]<<endl;
str[0] = '\0';
}
return 0;
}