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)]