数据结构与算法
数据结构与算法学习记录
小小子596
这个作者很懒,什么都没留下…
展开
-
快速排序算法
思想:采用分治的思想,在数组中选取一个基准元素(一般取第一个元素),将比它大的元素交换到基准的右侧,比它小的元素交换到基准的左侧,这样就完成了一轮次的排序,该基准元素就被放到了合适的位置。然后采用递归的方法对基准元素左侧和右侧的子序列进行再次排序,直至序列不再可分为止。 实现代码: #include<iostream> using namespace std; int Paritition1(int arr[], int low, int high) { int pivot = a原创 2021-10-22 19:51:17 · 142 阅读 · 0 评论 -
插入排序算法
基本思想:将待排序元素与已排序元素从最右侧比较大小,找到比待排序元素小的元素,插入到其后面成为已排序元素。 实现代码 void insert_sort(std::vector<int> &arr) { for(int i=1; i < arr.size(); i++) { int temp = arr[i];//待排序元素 int j=i-1; for(; j >=0; j--)原创 2021-10-17 18:00:32 · 81 阅读 · 0 评论 -
选择排序算法
基本思想:在一次遍历中选出本轮中的最大或者最小值,放到最右边,下次遍历时不再遍历最后一个元素。 实现代码 #include "select_sort.h" #include <algorithm> void select_sort(std::vector<int> &arr) { for(int i=0; i <arr.size(); i++) { int min_index=i, max_index = i; f原创 2021-10-17 17:02:10 · 67 阅读 · 0 评论 -
时间复杂度和空间复杂度
一、时间复杂度 大O符号表示法 ,在 大O符号表示法中,时间复杂度的公式是: T(n) = O( f(n) ),其中f(n) 表示每行代码执行次数之和,而 O 表示正比例关系,这个公式的全称是:算法的渐进时间复杂度。 常见的时间复杂度量级有: 常数阶O(1) 对数阶O(logN) 线性阶O(n) 线性对数阶O(nlogN) 平方阶O(n²) 立方阶O(n³) K次方阶O(n^k) 指数阶(2^n) 上面从上至下依次的时间复杂度越来越大,执行的效率越来越低。 1.常数阶O(1) 无论代转载 2021-07-22 16:56:47 · 209 阅读 · 0 评论