sort进行特定规则的排序

设有n个正整数 (n<=20), 将它们连接成一排, 组成一个最大的多位整数.

例如: n=3时, 3个整数13, 312, 343连接成的最大整数为: 34331213

又如: n=4时, 4个整数7,13,4,246连接成的最大整数为: 7424613

#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
string a[1000];
bool comp(string a,string b) {
    return (a + b > b + a);     //直接给出sort排序后a在b前所要满足的条件
}
int main() {
    int n, d = 1;
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> a[i];
    sort(a, n + a, comp);
    for (int i = 0; i < n; i++)
        cout << a[i];
    cout << endl;
}     

STL中sort可自写的cmp函数的定义,所谓cmp或者叫什么其他名字的函数,事实上是一个校验器。是在计算机排序完毕之后,校验序列是否符合编程者所需要的顺序。

时间: 2024-11-03 21:25:47

sort进行特定规则的排序的相关文章

sort()使整数排序

sort()方法可将数组升序排序,但它是把数组的值转化为字符串后在排序的, 如 var a = [1,12,3,8,123] a.sort()  结果 1,12,123,3,8 和我们想要的结果不一样,解决方法, function compare(value1, value2) { return value1 - value2; } var values = [1,12,3,8,123]; values.sort(compare); alert(values); //1,3,8,12,123 如

sort+结构体实现二级排序

之前介绍的sort函数由于其效率较高,使用较为简单让我用起来那叫一个爽,今天再写一篇使用sort+结构体实现二级排序的方法. 还是先想个问题吧,比如我想输入5个同学的名字和身高,然后得到他们身高的降序,但是如果出现相同身高的情况,名字的拼音靠前的排在前面. 好,现在这个问题已经涉及到了二级排序,要按照身高的降序和姓名的升序排列,那么就要先定义一个结构体,将姓名和身高都包含进去,然后用sort对结构体排序,而实现二级排序,关键在于自己写的cmp函数(sort的比较方法) 1 #include<io

java.util.Arrays.sort两种方式的排序(及文件读写练习)

import java.io.*; import java.util.*; public class SortTest{ public static void main(String args[]) throws IOException, ClassNotFoundException { FileReader InWord = new FileReader(new File("words.txt")); BufferedReader in = new BufferedReader(In

C# 字符串 数据类型 判断 与特定规则验证

验证字符串格式 1)判断字符串是否是常见数据类型,decimal,foalt,double,datetime,int等等 2)验证字符串符合特定规则    (1)邮箱地址,IP地址     (2)纯数字,纯字母(大写字母/小写字母),数字与字母   (3)电话号码,手机号码,出生日期 电子邮件格式.固定电话号码和手机号码格式等,我们经常会需要用到正则表达式. 但是正则表达式用起来性能会低一点,所以在需要验证的时候能不使用正则表达式还是尽量不要使用正则表达式. using System; usin

使用STL库sort函数对vector进行排序

使用STL库sort函数对vector进行排序,vector的内容为对象的指针,而不是对象. 代码如下 1 #include <stdio.h> 2 #include <vector> 3 #include <algorithm> 4 5 using namespace std; 6 7 class Elm 8 { 9 public: 10 int m_iSortProof; 11 12 private: 13 int __m_iValue; 14 static int

Java 特定规则排序-LeetCode 179 Largest Number

Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330. Note: The result may be very large, so you need to return a string instead of an i

Java Collections.sort方法对list集合排序

1.排序测试类 package com.ljq.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class UserSort { public static void main(String[] args) { List<User> userList =new ArrayList<User&g

Cycle Sort (交换次数最少的排序)

该算法的效率并不高.但是却提供了一个很好的思路.如何让一个序列在最小交换次数下实现有序. Cycle Sort 翻译成中文是 圈排序. 这个圈在于需要交换的数据形成圈. 具体一点: 如: Array  4 3 2 5 5 6  要处理的数组 Result 2 3 4 5 5 6  结果 pos     0 1 2 3 4 5  下标 从下标0的元素开始观察.4 需要到下标 2 而下标2的元素为 2 需要到下标0 .刚好可以回到4. 也就是形成了 4-2 这样的圈 接下来是3 需要到下标1 而3本

jQuery.sort对DOM元素进行排序

实例: 每个tr的第三列显示的都是数字,我们就以这数字列作为排序依据,方法就是利用jquery的sort()方法. 首先,利用jquery选择器获取每个tr元素,获取回来是一个数据: var $trs = $('#dataTable_table tbody tr'); 然后通过调用jquery的sort()方法进行排序,sort()方法接收的参数是一个方法,该方法就是实现排序的逻辑: $trs.sort(function(a,b){ var valveNumOfa = $(a).find('td