排序XXXXXXXXX

信息学奥赛|常见排序算法总结(C+) - 腾讯云开发者社区-腾讯云 (tencent.com)

https://cloud.tencent.com/developer/news/975232

常用序号层级排序

一、序号

  序号Sequence Number,有顺序的号码,如数字序号(1、2、3...),大写汉字数字序号(一、二、三...)
正确地运用序号,能使我们的文章层次清楚,逻辑分明,便于阅读和引述。
  在我们在写文章,特别是在写论文中经常会用到数字序号。如果不加以重视,文章中很容易出现层次大小不分、中文数字与阿拉伯数字混用、前后序号形式不统一等问题。

二、序号的结构层次顺序

(一)数字序号的级别顺序为:

第一层,汉字数字加顿号:“一、” “二、” “三、”;
第二层,括号中包含汉字数字:“(一)” “(二)” “(三)”;
第三层,阿拉伯数字加下脚点:“1. ”“2.”“3.”;
第四层,括号中包含阿拉伯数字:“(1)” “(2)” “(3)”;
第五层,带圈的阿拉伯数字,例如:“①” “②” “③”或者“1)” “2)” “3)”;
第六层,大写英文字母,例如:“A.” “B.” “C.”或者“(A)” “(B)” “(C)”;
第七层,小写英文字母,例如: “a.” “b.” “c.”或者“(a)” “(b)” “(c)”;

(二)理科类论文的正文层次标题序号

  理科类论文的各层次标题还可用阿拉伯数字连续编码,不同层次的2个数字之间用下圆点(.)分隔开,末位数字后面不加点号。如“1”,“1.2”,“1.2.1”等;
各层次的标题序号均左顶格排写,最后一个序号之后空一个字距接排标题。如“5.3.2 测量的方法”,表示第五章第三节第二条的标题是“测量的方法”。

注意:同一层次各段内容是否列标题应一致,各层次的下一级序号标法应一致,若层次较少可不用若干加括号的序号。

(三)正文中图、表、公式、算式等的序号

1.正文中的图、表、公式、算式等序号一律用阿拉伯数字分别依序连续编排序号,其标注形式应便于互相区别,如“图1、表2、式(5)”等;

图片取自论文《基于约束最小二乘的三维点云墙体重建》(周刚、李霖)

2.对长篇研究报告也可以分章(条)依序编码,如“图2.1、表4.2、式(3.3)”等,其前一个数字表示章(条)序号,后一个数字表示本章中图表、公式的序号。

图片取自书籍《ArcGIS地理信息系统教程》(原书第7版)

33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333

计算机综合基础知识记录(408、面试) - 知乎 (zhihu.com)

https://zhuanlan.zhihu.com/p/626540048

qtreeview 某一列排序 1 1-1 1-1-1

为了在QTreeView的某一列上进行排序,你可以使用QTreeView的sortByColumn()方法,并且可能需要重写QTreeView的sectionClicked信号处理函数。

以下是一个简单的例子,展示了如何对QTreeView的某一列进行排序。

 
 

from PyQt5.QtWidgets import QApplication, QTreeView, QTableWidgetItem, QHeaderView, QAbstractItemView

from PyQt5.QtCore import Qt, QModelIndex, QSortFilterProxyModel, QStringListModel

class CustomSortProxyModel(QSortFilterProxyModel):

def lessThan(self, left: QModelIndex, right: QModelIndex) -> bool:

left_data = left.data()

right_data = right.data()

# 对数据进行自定义排序规则

# 这里是按照数字、短横线数字、短横线数字短横线的顺序进行排序

def split_items(item):

return item.split('-')

left_parts = split_items(left_data)

right_parts = split_items(right_data)

for i in range(min(len(left_parts), len(right_parts))):

left_part = left_parts[i]

right_part = right_parts[i]

try:

# 尝试转换为整数,进行数字比较

left_num = int(left_part)

right_num = int(right_part)

if left_num != right_num:

return left_num < right_num

except ValueError:

# 如果不是整数,就直接比较字符串

if left_part != right_part:

return left_part < right_part

# 如果前面部分都相同,则比较部分的长度

return len(left_parts) < len(right_parts)

def main():

app = QApplication([])

model = QStringListModel()

data = ["1", "1-1", "1-1-1", "2", "2-1", "2-2", "3", "3-1", "3-1-1"]

model.setStringList(data)

tree = QTreeView()

tree.setModel(model)

# 设置代理模型以实现自定义排序

proxy_model = CustomSortProxyModel()

proxy_model.setSourceModel(model)

tree.setModel(proxy_model)

# 设置第一列可排序

tree.sortByColumn(0, Qt.AscendingOrder)

tree.header().setSectionResizeMode(QHeaderView.ResizeToContents)

tree.setEditTriggers(QAbstractItemView.NoEditTriggers)

tree.show()

app.exec_()

if __name__ == '__main__':

main()

在这个例子中,我们创建了一个QTreeView来展示一个字符串列表。我们定义了一个CustomSortProxyModel类,它重写了lessThan方法来实现自定义的排序逻辑。这里的逻辑是尝试将每个条目分割成部分,并尝试将每个部分转换为整数进行比较,如果转换失败则直接比较字符串。这样就可以按照数字、短横线数字、短横线数字短横线…的顺序进行排序。当你点击列头时,QTreeView会自动调用sortByColumn方法进行排序,并使用我们定义的CustomSortProxyModel来实现自定义的排序逻辑。

44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444

https://blog.csdn.net/in_void/article/details/111720221

C++数据结构的一些代码(排序部分)_c++利用结构体排序插入代码l-CSDN博客

555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555

排序算法原理及C++实现(桶排序、冒泡排序、快速排序) - 知乎 (zhihu.com)

排序算法原理及C++实现(桶排序、冒泡排序、快速排序) - 知乎 (zhihu.com)

https://zhuanlan.zhihu.com/p/431933290

66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666

https://www.cnblogs.com/starboy/p/11693675.html

 

C++|关于各种排序的总结 - =Icarus= - 博客园 (cnblogs.com)

777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777

1 1-1 1-1-1 排序 C++

要对这种格式的数字字符串进行排序,我们可以将它们分割为子串,并将每个子串转换为数字,然后比较数字的大小。以下是一个C++函数,它接受一个字符串向量作为输入,并按照这种格式的数字大小对其进行排序。

 
 

#include <iostream>

#include <vector>

#include <algorithm>

bool compareVersion(const std::string& a, const std::string& b) {

std::vector<int> a_version, b_version;

int num = 0;

for (char c : a) {

if (c == '-') {

a_version.push_back(num);

num = 0;

} else if (c >= '0' && c <= '9') {

num = num * 10 + (c - '0');

}

}

a_version.push_back(num);

num = 0;

for (char c : b) {

if (c == '-') {

b_version.push_back(num);

num = 0;

} else if (c >= '0' && c <= '9') {

num = num * 10 + (c - '0');

}

}

b_version.push_back(num);

for (size_t i = 0; i < a_version.size() && i < b_version.size(); ++i) {

if (a_version[i] < b_version[i]) return true;

if (a_version[i] > b_version[i]) return false;

}

return a_version.size() < b_version.size();

}

int main() {

std::vector<std::string> versions = {"1-1", "1-1-1", "1-1-2", "1-2", "2-1", "2-2"};

std::sort(versions.begin(), versions.end(), compareVersion);

for (const auto& version : versions) {

std::cout << version << std::endl;

}

return 0;

}

这段代码定义了一个compareVersion函数,它将字符串版本号分割为子版本号,并将它们转换为整数,然后按照从左到右的顺序比较它们。main函数中的代码展示了如何使用这个比较函数对版本号数组进行排序。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值