当前位置: 首页 > 编程笔记 >

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

颛孙和颂
2023-03-14
本文向大家介绍c++实现对输入数组进行快速排序的示例(推荐),包括了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;
}

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

 类似资料:
  • 本文向大家介绍C语言对磁盘文件进行快速排序简单实例,包括了C语言对磁盘文件进行快速排序简单实例的使用技巧和注意事项,需要的朋友参考一下 C语言对磁盘文件进行快速排序简单实例 快速排序(quick sort)是由C.A.R.Hoare发明并命名的,这种排序被认为是目前最好的一种排序算法。快速排序基于交换排序,与同样的基于交换排序的冒泡排序法相比,其效果非常明显。 它的基本思想是:通过一趟排序将要排序

  • 本文向大家介绍Python实现快速排序算法及去重的快速排序的简单示例,包括了Python实现快速排序算法及去重的快速排序的简单示例的使用技巧和注意事项,需要的朋友参考一下 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用。 该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

  • 本文向大家介绍Python实现快速排序和插入排序算法及自定义排序的示例,包括了Python实现快速排序和插入排序算法及自定义排序的示例的使用技巧和注意事项,需要的朋友参考一下 一、快速排序     快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所

  • Leetcode#167几乎与#1相同,但为什么我不能只添加一个if条件? 函数twoSum应该返回两个数字的索引,使它们相加为目标,其中index1必须小于index2。 注: 返回的答案(index1和index2)不是从零开始的。您可以假设每个输入都有一个解决方案,并且不能两次使用同一个元素。

  • 本文向大家介绍C#实现的二维数组排序算法示例,包括了C#实现的二维数组排序算法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现的二维数组排序算法。分享给大家供大家参考,具体如下: 运行结果: 更多关于C#相关内容感兴趣的读者可查看本站专题:《C#数组操作技巧总结》、《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用

  • 本文向大家介绍Scala实现冒泡排序、归并排序和快速排序的示例代码,包括了Scala实现冒泡排序、归并排序和快速排序的示例代码的使用技巧和注意事项,需要的朋友参考一下 1、冒泡排序 2、归并排序 3、快速排序 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。