keywords: [Algorithms]算法题：字符串转换为整数并排序

``````#include <iostream>
#include <string>
#include <vector>
#include <math.h>

int main(int argc, char* argv[])
{
std::vector<std::string> StrArr;
StrArr.push_back(std::string("563435"));
StrArr.push_back(std::string("234234"));
StrArr.push_back(std::string("454"));
StrArr.push_back(std::string("5765"));
StrArr.push_back(std::string("12"));
StrArr.push_back(std::string("6"));

//字符串转数字
std::vector<int> IntArr;
for (std::string& str : StrArr)
{
size_t len = str.length();
int val = 0;
for (size_t i = 0; i < len; i++)
{
char c = str.at(i);
//判断是不是阿拉伯数字
if (c < 48 || c > 57)
{
continue;
}
int iv = c - 48;
val += pow(10, (len - 1 - i)) * iv;
}

IntArr.push_back(val);
}

//冒泡排序。升序
for (size_t i = 0; i < IntArr.size(); i++)
{
int iv = IntArr[i];
for (size_t j = 1; j < IntArr.size(); j++)
{
int jv = IntArr[j];
int jv_prev = IntArr[j - 1];
if (jv < jv_prev)
{
IntArr[j] = jv_prev;
IntArr[j - 1] = jv;
}
}
}

for (int v : IntArr)
{
std::cout << v << std::endl;
}

system("pause");
}
``````

``````6
12
454
5765
234234
563435
``````

### 参考

##### 快速排序
``````//快速排序
void quick_sort(int s[], int l, int r)
{
if (l < r)
{
//Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换
int i = l, j = r, x = s[l];
while (i < j)
{
while(i < j && s[j] >= x) // 从右向左找第一个小于x的数
j--;
if(i < j)
s[i++] = s[j];

while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数
i++;
if(i < j)
s[j--] = s[i];
}
s[i] = x;
quick_sort(s, l, i - 1); // 递归调用
quick_sort(s, i + 1, r);
}
}
``````

`真正的强者，不是没有眼泪的人，而是含着眼泪奔跑的人。`