首页 > 编程 > C++ > 正文

c++实现对输入数组进行快速排序的示例(推荐)

2020-01-26 14:06:19
字体:
来源:转载
供稿:网友

废话不多说,直接上代码

#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;}

以上这篇c++实现对输入数组进行快速排序的示例(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表