zoukankan      html  css  js  c++  java
  • STL之stable_sort与sort

    这两个函数都能完成排序,时间复杂度在所有的排序中也是最低,唯一的差别就是stable_sort是一种稳定的排序,在两个元素相同的时候不交换位置,而sort则不然,这个差别在单一普通数组排序中没影响,但是如果对结构体进行排序的话就会有明显差别。具体参照 POJ 1007 点击打开题目链接    这道题就是用普通的sort会改变结构体的相对位置,放上

    AC代码:


    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int len;
    
    struct node
    {
    	char s[55];
    	int score;
    }p[110];
    
    bool cmp(const node a, const node b)
    {
    	return a.score < b.score;
    }
    
    int sum(char *p)
    {
    	int len, sum;
    	sum = 0;
    	len = strlen(p);
    	for(int i = 0; i < len; ++i)
    	{
    		for(int j = i + 1; j < len; ++j)
    		{
    			if(p[i] > p[j])
    				sum++;
    		}
    	}
    	return sum;
    }
    
    int main()
    {
    	int num;
    	char s[110];
    	while(scanf("%d%d", &len, &num) != EOF)
    	{
    		for(int i = 0; i < num; ++i)
    		{
    			scanf("%s", p[i].s);
    			p[i].score = sum(p[i].s);
    		}
    		stable_sort(p, p + num, cmp); //稳定排序,等值不交换
    		for(int i = 0; i < num; ++i)
    			printf("%s
    ", p[i].s);
    	}
    	return 0;
    }



  • 相关阅读:
    c#多线程和Socket笔记
    Socket测试工具包的开发(TCP UDP)
    使用socket模拟服务器给客户端发消息
    AU3学习笔记
    c#委托与事件(三)
    c#委托与事件(二)
    使用的工具
    Zip 压缩问题件,获取真实扩展名
    PsExec使用
    socket 통신
  • 原文地址:https://www.cnblogs.com/emoji/p/4436790.html
Copyright © 2011-2022 走看看