Day 14: Scope

题目:

    

C++:

#include <stdlib.h>
#include <stdio.h>
#include <vector>
#include <math.h>
#include <string>
#include <map>
#include <algorithm>
#include <iostream>

using namespace std;


class Difference {
private:
    vector<int> elements;

public:
    int maximumDifference;

    // Add your code here
    Difference(vector<int> e) {
	elements = e;
    }

    void computeDifference() {
	sort(elements.begin(), elements.end());
	int x = *elements.begin();
	int y = *(elements.end()-1);
	maximumDifference = y - x;
    }
}; // End of Difference class

int main() {
    int N;
    cin >> N;

    vector<int> a;

    for (int i = 0; i < N; i++) {
	int e;
	cin >> e;

	a.push_back(e);
    }

    Difference d(a);

    d.computeDifference();

    cout << d.maximumDifference;

    system("pause");
    return 0;
}

Python:

class Difference:
    def __init__(self, a):
        self.__elements = a

	# Add your code here
    def computeDifference(self):
        self.__elements.sort()
        x=self.__elements[0]
        y=self.__elements[len(self.__elements)-1]
        self.maximumDifference=y-x

# End of Difference class

_ = input()
a = [int(e) for e in input().split(' ')]

d = Difference(a)
d.computeDifference()

print(d.maximumDifference)

总结:

C++:

使用sort(start,end,排序方法)函数对数组进行排序

sort函数头文件为  #include<algorithm>

sort函数有三个参数:

(1)第一个是要排序的数组的起始地址。

(2)第二个是结束的地址(最后一位要排序的地址)

(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,可不写第三个参数,此时默认的排序方法是从小到大排序。

例子:

例一:sort函数没有第三个参数,实现的是从小到大

#include<iostream>

#include<algorithm>
using namespace std;
int main()
{
   int a[10]={9,6,3,8,5,2,7,4,1,0};

   for(int i=0;i<10;i++)
       cout<<a[i]<<endl;

   sort(a,a+10);

   for(int i=0;i<10;i++)
       cout<<a[i]<<endl;

   return 0;
}

例二:sort()函数里的第三个参数,加入一个比较函数 complare(),实现从大到小的排序

比较函数 complare()如下:

bool complare(int a,int b)
{
    return a>b;
}

完整代码如下:

#include<iostream>
#include<algorithm>
using namespace std;
bool complare(int a,int b)
{
     return a>b;
}
int main()
{
     int a[10]={9,6,3,8,5,2,7,4,1,0};

     for(int i=0;i<10;i++)
         cout<<a[i]<<endl;

     sort(a,a+10,complare);//在这里就不需要对complare函数传入参数了,这是规则

     for(int i=0;i<10;i++)
        cout<<a[i]<<endl;

     return 0;
}

注意:

获取向量vector的值,使用  “ * ” 

 *elements.begin():表示向量elements第一个元素的值

  elements.begin():表示向量elements第一个元素的地址


 *(elements.end()-1):表示向量elements最后一个元素的值

  elements.end()-1:表示向量elements最后一个元素的地址

Python:

对list排序:

list.sort(cmp=None, key=None, reverse=False)
  • cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。

获取list的长度:

len(list1)

定义列表 

list1 = [1, 2, 3, 4, 5]

获取list的第一个元素:

print(list1[0])

获取list1的最后一个元素,注意第二种方法的使用:

print(list1[len(list1)-1])
print(list1[-1])

以此类推,可以获取倒数第二,第三...个元素的值:

print(list1[-2])
print(list1[-3])
print(list1[-4])
print(list1[-5])

升序例子:


#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
aList = [123, 'Google', 'Runoob', 'Taobao', 'Facebook'];
 
aList.sort();
print ("List : ", aList)

以上实例输出结果如下:

List :  [123, 'Facebook', 'Google', 'Runoob', 'Taobao']

降序例子:


#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 列表
vowels = ['e', 'a', 'u', 'o', 'i']
 
# 降序
vowels.sort(reverse=True)
 
# 输出结果
print ('降序输出:', vowels)

以上实例输出结果如下:

降序输出: ['u', 'o', 'i', 'e', 'a']

通过指定列表中的元素排序来输出列表:


#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 获取列表的第二个元素
def takeSecond(elem):
    return elem[1]
 
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
 
# 指定第二个元素排序
random.sort(key=takeSecond)
 
# 输出类别
print('排序列表:', random)

以上实例输出结果如下:

排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]

参考:http://www.runoob.com/python/att-list-sort.html

           https://www.cnblogs.com/mgw2168/p/9476375.html

猜你喜欢

转载自blog.csdn.net/zhuiqiuzhuoyue583/article/details/88595221