问题的由来:最近在做一些算法题时,涉及到对字符串进行排序,网上查阅了大量文章感觉都没有对此问题有一个明确的说法,索性自己做实验并总结出一定的规律,方便自己也方便他人。
问题的抽象:考虑对n个字符串(字符串均由可打印字符组成,具体而言十进制码值位于[32,126]这个区间)进行升序排序,输出排序后的字符串情况,并分析时间复杂度。
问题的思考过程:以下面的ASCII码表为依据,从字符串的长度以及字符串的组成类型两个角度来思考排序时的比较规则。
- 字符串中的字符都为同一类型(如均为数字字符串或小写字母串),但长度不同时:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<string> vc = {"a", "b", "abc", "ad", "aba", "bdc"};
vector<string> vc1 = {"0", "5", "110", "12",