//排序
QStringList savedata::Bubble_Bort(QStringList list)
{
QStringList SortList;
int n = list.size();
for(int i=0;i<n;i++) {
QString Sort = "R99999.9";
int In = -1;
for(int j=0;j<list.size();++j) {
bool compare = Str_Double1(Sort, list.at(j));
//if(rn < Sort)
if (compare)
{
//Sort = rn;
Sort = list.at(j);
In = j;
}
}
SortList.append(list.at(In));
list.removeAt(In);
}
return SortList;
}
//str转为double后比较大小,ex:R1.2
bool savedata::Str_Double1(QString str1, QString str2)
{
bool ok = true;
int f1 = str1.split(“R”).at(1).split(“.”).at(0).toUInt(&ok, 10);//小数点前面的值
int f2 = str2.split(“R”).at(1).split(“.”).at(0).toUInt(&ok, 10);//小数点前面的值
QString b1 = str1.split(“R”).at(1).split(“.”).last();//小数点后面的值
QString b2 = str2.split(“R”).at(1).split(“.”).last();//小数点后面的值
if (f1 > f2) {//小数点前面的数字没有字母可以直接比较,//如果f1大,就返回str1
return true;
} else if (f1 == f2) {//如果小数点前面的相等,就比较小数点后面的字符大小
if (b1.contains(QRegExp(“^\d+KaTeX parse error: Got function '\\' with no arguments as superscript at position 76: …ains(QRegExp("^\̲\̲d+”))) {//如果b2是纯数字
if (b1.toUInt(&ok, 10) > b2.toUInt(&ok, 10)) {//转为数字直接比较
return true;
} else {
return false;
}
} else {//如果b2不是纯数字
if (b1.toUInt(&ok, 10) > b2.left(b2.length()-1).toUInt(&ok, 10)) {//将b2去除字母直接比较(因为字母定是最后一位)
return true;
} else if (b1.toUInt(&ok, 10) == b2.left(b2.length()-1).toUInt(&ok, 10)) {//去除字母后相等,说明带字母的大
return false;
} else {
return false;
}
}
} else {//如果b1不是纯数字
if (b2.contains(QRegExp(“^\d+$”))) {//如果b2是纯数字
if (b1.left(b1.length()-1).toUInt(&ok, 10) > b2.toUInt(&ok, 10)) {//将b1去除字母转为数字直接比较(因为字母定是最后一位)
return true;
} else if (b1.left(b1.length()-1).toUInt(&ok, 10) == b2.toUInt(&ok, 10)) {//去除字母后相等说明带字母的大
return true;
} else {
return false;
}
} else {//如果b2不是纯数字
if (b1.left(b1.length()-1).toUInt(&ok, 10) > b2.left(b2.length()-1).toUInt(&ok, 10)) {//将b1、b2都去除字母直接比较(因为字母定是最后一位)
return true;
} else if (b1.left(b1.length()-1).toUInt(&ok, 10) == b2.left(b2.length()-1).toUInt(&ok, 10)) {//b1b2都带字母时,且只有字母不同,就将字母转为int比较,
if ((int)(b1.toUtf8().at(b1.length()-1)) > (int)(b2.toUtf8().at(b2.length()-1))) {
return true;
} else {
return false;
}
} else {
return false;
}
}
}
} else {//如果f1小,就返回str2
return false;
}
}