【C++学习】【算法学习】快速排序与C++基础
2019-03-10 19:49
141 查看
要点总结:
- 分治思想
- 递归思想
- 如何做到把数字以所选基准数的大小为基准将数字排列到基准数字左右
直接给代码:
#include<iostream> #include<stdlib.h> using namespace std; int findpivot(int a[],int low, int high){ int leftwall = low; //用于记录分割位置 swap(a[low],a[high]); //选择第一个数作为基准数并放到最后面 for(int i = low;i < high;i++){ if(a[i] < a[high]){ //比基准数小,放在分割位置左边 swap(a[i],a[leftwall]); leftwall++; //分割位置后移 } } swap(a[high],a[leftwall]); //将基准数放到正确的位置 int i =0; while(i < 10){ //显示当前排序结果,可不要 cout << a[i] <<" "; i++; } cout << endl; return leftwall; } void quicksort(int a[],int low,int high){ if(low < high){ int pivot = findpivot(a,low,high); quicksort(a,low,pivot - 1); quicksort(a,pivot + 1,high); } return; } int main(){ //测试函数 int i = 0; int a[10] = {10,8,9,3,4,6,5,7,2,1}; quicksort(a,0,9); while(i < 10){ cout << a[i] <<" "; i++; } getchar(); }
反思:
自己的想法非常不足,应当理清算法后再写成代码,不然非常浪费时间,还会让自己迷糊。
由于是第一次使用C++查了不少资料相关链接如下:
算法思想:https://www.youtube.com/watch?v=Hoixgm4-P4M
常用库函数大全 https://www.geek-share.com/detail/2661666085.html
C++输入方法 https://www.geek-share.com/detail/2679917515.html
相关文章推荐
- C++基础算法学习——汉洛塔问题
- C++基础算法学习——生理周期
- C++基础算法学习——熄灯问题
- C++基础算法学习——猜假币
- C++基础算法学习——N皇后问题
- C++基础算法学习——逆波兰表达式问题
- C++基础算法学习——完美立方
- C++精华(STL)学习笔记之算法
- 【C++基础学习】C++ main():处理命令行选项
- 复习:支持向量机的理论基础-学习算法的构造
- C#数据结构和算法学习系列四----基础排序算法
- Introduction to Algorithms 算法导论 第1章 基础知识 学习笔记及习题解答
- C++学习(4)--基础知识(4)--关于const
- C/C++ 基础知识学习笔记 (不断更新中)
- c++基础学习第三天(c++程序的结构课后练习)
- 在emacs中用gdb调试学习算法与数据结构基础(1)_猜价格游戏
- 从Delphi转向VC系列学习一:C++基础知识
- 【C++基础学习】关于C++静态数据成员
- C\C++ 程序员从零开始学习Android - 个人学习笔记(三) - java基础 - 环境和工具
- C++学习笔记------入门基础