排序算法(1)-- 初级排序
2018-09-25 本文已影响0人
deBroglie
问题描述:重新排列数组元素。其中每个元素都有一个主键,排序后索引较大的主键大于索引较小的主键。
排序算法(模板)类C++11代码模板
#include <cassert>
#include <iostream>
#include <vector>
#include <sstream>
#include <string>
template<typename T>
class Example {
public:
void sort(std::vector<T>& a) {/**各排序算法具体的实现代码**/}
/*比较大小*/
bool less(T v, T w) {return v < w;}
/*对换方法*/
void swap(std::vector<T>& a, int i, int j) {
T tmp = a[i]; a[i] = a[j]; a[j] = tmp;
}
/*打印结果*/
void show(std::vector<T>& a) {
for (int i=0; i<a.length(); ++i)
std::cout << a[i] << " ";
std::cout << std::endl;
}
/*排序判断*/
bool isSorted(std::vector<T>& a) {
for (int i=0; i<a.length(); ++i)
if (less(a[i], a[i-1])) return false;
return true;
}
/*测试方法*/
void test() {
const int MAX_CHAR_N = 1024;
char buf[MAX_CHAR_N];
std::cin.getline(buf, MAX_CHAR_N);
std::istringstream iss(buf);
std::vector<std::string> test_list(0);
std::string s;
while (std::getline(iss, s, ' ')) {
std::cout << s << std::endl;
test_list.push_back(s);
}
sort(test_list);
assert(isSorted(test_list));
show(test_list);
}
}
排序算法类Python3代码模板
class Example(object):
def __init__():
pass
def sort(a):
# 各排序算法具体的实现代码
return a
def less(v, w):
return v < w
# def swap(a, i, j):
# # 事实上,这个swap方法不应该被使用,而应该直接将如下行在sort()中执行
# a[i], a[j] = a[j], a[i]
# return a
def show(a):
print(*a)
def isSorted(a):
return all(a[i] <= a[i+1] for i in range(len(a)-1))
def test():
iss = input()
test_list = iss.split(' ')
test_list = sort(test_list);
assert isSorted(test_list);
show(test_list);