排序算法(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);
上一篇下一篇

猜你喜欢

热点阅读