zoukankan      html  css  js  c++  java
  • c++实现对输入数组进行快速排序

    #include "stdafx.h"
    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    void quickSort(vector<int> &a, int, int);
    void swap(int &a, int&b);
    vector<string> split(string s, string seperator);
    
    int main() {
        string str;
        cout << "please input your array: " << endl;
        getline(cin, str);
        vector<string> strs = split(str, " ");
        cout << "The original array is " << endl;
        for (unsigned int i = 0; i < strs.size(); i++) {
            cout << strs[i] << " ";
        }
        cout << endl;
        vector<int> array(strs.size());
        for (unsigned int i = 0; i < strs.size(); i++) {
            array[i] = atoi(strs[i].c_str());
        }
        int len = array.size();
        cout << "The ordered array is " << endl;
        quickSort(array, 0, len-1);
        for (int i = 0; i < len; i++) {
            cout << array[i] << " ";
        }
        cout << endl;
        system("pause");
        return 0;
    }
    void quickSort(vector<int> &a, int start, int base) {
        if (start >= base) {
            return;
        }
        int i = start, j = start;
        int temp = a[base];
        for (;j<base;j++) {
            if (a[j]<=temp) {
                swap(a[i], a[j]);
                i++;
            }
        }
        if (a[i] > a[base]) {
            swap(a[i], a[base]);
        }
        quickSort(a, start, i - 1);
        quickSort(a, i + 1, base);
    }
    void swap(int &a, int&b) {
        if (a == b) {
        }
        else {
            a = a + b;
            b = a - b;
            a = a - b;
        }
        
    }
    vector<string> split(string s, const string pattern) {
        string::size_type pos;
        vector<string> result;
        s += pattern;
        unsigned int size = s.size();
        for (unsigned int i = 0; i < size; i++) {
            pos = s.find(pattern, i);
            if (pos < size) {
                string str = s.substr(i, pos - i);
                if (!str.empty()){
                    result.push_back(str);
                }
                i = pos + pattern.size() - 1;
    
            }
        }
        return result;
    }
  • 相关阅读:
    【转】umount 的时候报错:device is busy
    【转】linux shell 的tr命令
    给bash的提示符设置不同的颜色
    备份系统时候出现错误
    [转]Xen 的漫漫人生路
    linux/screen的指令
    扩大centos镜像的硬盘空间
    ASP.NET Web API学习资源
    svn make a tag
    query多选下拉框插件 jquerymultiselect
  • 原文地址:https://www.cnblogs.com/kdxb/p/6934277.html
Copyright © 2011-2022 走看看