如何按字母升降序排序数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何按字母升降序排序数组?相关的知识,希望对你有一定的参考价值。

参考技术A 以java为例做一下排序:
script type="text/javascript">

//实现最小值
function sortMinNumber(a,b)return a – b

//实现最大值
function sortMaxNumber(a,b)return b – a

//数组
var arr = [10,255,6,85,23]
参考技术B 在单元格A1至A26中分别输入“A至Z”26个英文字母,
并用鼠标选定A1:A26,然后【工具】→【选项】,切换至“自定义序列”选项卡,单击“添加”按钮并“确定”。参考资料:Office之家
http://www.officejia.com/excel/wenda/20100817_13132.html
以后,你就可以永远方便的实现按字母升降排序了!
看,我们还可以将“周一,周二,……”,“张三,李四,……”等原来电脑中没有的序列定义出来呢!不但可以实现排序的方便,在输入数据时也比其他人快多了!
选中要排列的列——数据——排序,选升序后,——选项——字母排序
假如姓名在A列工具栏中的——数据——排序——主要关键字——列
A——升序——确定
姓名排序就可以了
选定姓名这一列,点数据选排序按升序就可以得到从A到Z的顺序了。

如何按字母顺序对 QTableView 中的项目进行排序

【中文标题】如何按字母顺序对 QTableView 中的项目进行排序【英文标题】:How can i sort items in a QTableView in alphabetic order 【发布时间】:2018-02-16 03:35:41 【问题描述】:

我想按字母顺序对 QTableView 中的项目进行排序。我已经搜索了互联网,但一切都在脉络中,我发现的那些仅限于按升序或降序排序并使用抽象模型,但在我的情况下,这些项目是从数据库中获取的。 我什至没有明确的代码,因为我没有找到任何相关的解决方案。我所拥有的只是这段代码,运行时会出错

database = QtSql.QSqlDatabase().addDatabase('QSQLITE')
database.setDatabaseName('database.db')
database.open()
self.table_model1 = QtSql.QSqlQueryModel()
self.table_model1.setQuery("SELECT * FROM Individuals ")
self.tableView1.setModel(self.table_model1)
self.table_model1.setHeaderData(0, QtCore.Qt.Horizontal, "Name")
self.table_model1.setHeaderData(1, QtCore.Qt.Horizontal, "Tel No.")
self.table_model1.setHeaderData(2, QtCore.Qt.Horizontal, "Email") 
self.tableView1.horizontalHeader().setVisible(True)
self.tableView1.setSortingEnabled(True)
self.tableView1.horizontalHeader().sortIndicatorChanged.connect(self.sort_table1)

def sort_table1(self):
    self.tableView1.sortByColumn(0, QtCore.Qt.OrderedAlphaDither)

【问题讨论】:

您必须提供minimal reproducible example 你可以展示你是如何实现你的模型的,你的输入是什么,你的输出是什么。 Qt.OrderedAlphaDither 是用于其他任务的标志,它不适用于排序,该标志用于 QImage 将 Qt.OrderedAlphaDither 更改为 Qt.AscendingOrder 它保持不变。这是我之前尝试过的代码,但无济于事 【参考方案1】:

如果你想对数据进行排序,你应该覆盖模型的 sort() 方法或使用对数据进行排序的代理,在这种情况下,我将使用 QSortFilterProxyModel

例子:

def createConnection():
    db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
    db.setDatabaseName(':memory:')
    if not db.open():
        print( "Cannot open database",
                "Unable to establish a database connection.\n"
                "This example needs SQLite support. Please read the Qt SQL "
                "driver documentation for information how to build it.\n\n"
                "Click Cancel to exit.")
        return False

    query = QtSql.QSqlQuery()
    query.exec_("create table person(id int primary key, "
                "firstname varchar(20), lastname varchar(20))")
    query.exec_("insert into person values(101, 'Danny', 'Young')")
    query.exec_("insert into person values(102, 'Christine', 'Holand')")
    query.exec_("insert into person values(103, 'Lars', 'Gordon')")
    query.exec_("insert into person values(104, 'Roberto', 'Robitaille')")
    query.exec_("insert into person values(105, 'Maria', 'Papadopoulos')")

    return True

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    if not createConnection():
        sys.exit(1)
    table = QtWidgets.QTableView()
    table.setSortingEnabled(True)
    model = QtSql.QSqlQueryModel()
    model.setQuery("select * from person")
    proxy = QtCore.QSortFilterProxyModel()
    proxy.setSourceModel(model)
    table.setModel(proxy)
    table.show()
    sys.exit(app.exec_())

【讨论】:

以上是关于如何按字母升降序排序数组?的主要内容,如果未能解决你的问题,请参考以下文章

js数组排序的六种方法

数组的升降序排列

除数字外,如何按字母顺序对对象数组进行排序?

JAVA通过数组按首字母排序

按字母顺序对 c 字符串数组进行排序

按字母数字对javascript数组进行排序[重复]