数据结构与算法
数据结构与算法
Endless丶Go
游戏服务器研发
展开
-
为什么要学习数据结构与算法?
今天开始在极客时间学习《数据结构与算法之美》课程,开篇便是“为什么要学习数据结构与算法?”这个老生常谈的话题。 那么为什么要学习数据结构与算法呢?归根结底,你学习一个东西是因为你觉得他有收益,那么学习数据结构与算法,收益在哪里呢? 短期收益是应对考试、面试。 长期收益是“用”,来解决实际工程问题。 文中还提到了三点: 1.数据结构与算法的设计思想、背后原理能够帮助我们更高效定位问题、分析性能开销和资源利用,进而让你不只是一个简单的业务开发Boy。 2.要以“能够写出开源水平的框架”为目标,开源工原创 2020-05-24 12:54:45 · 1282 阅读 · 0 评论 -
LeetCode 数组
LeetCode 283. Move Zeroes class Solution { public: void moveZeroes(vector<int>& nums) { //[0,j)存非0元素,i表示待访问的元素,[j,i)存0元素 int j = 0; for(int i=0; i<nums.size(...原创 2018-08-05 19:12:45 · 194 阅读 · 0 评论 -
随机生成算法测试用例和性能测试
1、生成大量随机数 2、传入函数指针,对不同的排序算法进行统一的性能测试 //main.cpp #include <iostream> #include <string> #include "SortTestHelper.h" template<typename T> void SelectSort(T arr[], int n) { //寻找[i,n...原创 2018-07-27 23:38:49 · 1569 阅读 · 0 评论 -
二分查找算法
二分查找基本思路:对于有序的数组,待查找的元素与数组区间的中间值进行比较,若恰好是待查找的元素,则返回索引,否则根据大小关系在中间值的左右区间内继续查找。 这里关键是对数组区间的定义,不同的定义写出的代码不一样,需要了解自己定义的变量含义! 1、闭区间 template<typename T> int binarySearch(T arr[], int n, T target)...原创 2018-08-05 12:57:58 · 266 阅读 · 0 评论 -
选择排序加入模板和自定义类型
将选择排序算法变成模板函数,并且加入自定义类型Student //main.cpp #include <iostream> #include <string> #include "Student.h" template<typename T> void SelectSort(T arr[], int n) { //寻找[i,n)区间内的最小值 for ...原创 2018-07-27 01:15:38 · 223 阅读 · 0 评论 -
选择排序
重新开始算法之旅,从最简单的排序算法开始,每天积累一点点。 选择排序基本思路:每轮循环中找出待排序元素中最小的一个。 下面是C++代码 #include <iostream> void SelectSort(int arr[], int n) { //寻找[i,n)区间内的最小值 for (int i = 0; i < n; i++) { ...原创 2018-07-27 00:36:33 · 117 阅读 · 0 评论 -
快速排序及改进
快速排序基本思路:找到一个标定点,左边的元素小于标定点,右边元素大于标定点,然后再对左右区间递归快速排序。 // 对arr[l...r]部分进行partition操作 // 返回p, 使得arr[l...p-1] < arr[p] ; arr[p+1...r] > arr[p] template <typename T> int __partition(T arr[],...原创 2018-07-30 00:02:48 · 5065 阅读 · 0 评论 -
归并排序迭代版
template<typename T> void __Merge(T arr[], int l,int mid, int r) { T* arr1 = new T[r - l + 1]; int k = 0, i = l, j = mid + 1; for (; k < r - l + 1 && i<=mid &&j<=r; ...原创 2018-07-29 18:03:41 · 837 阅读 · 0 评论 -
归并排序及改进
template<typename T> void __Merge(T arr[], int l,int mid, int r) { T* arr1 = new T[r - l + 1]; int k = 0, i = l, j = mid + 1; for (; k < r - l + 1 && i<=mid &&j<=r; ...原创 2018-07-28 23:41:50 · 594 阅读 · 0 评论 -
希尔排序
//希尔排序 template<typename T> void ShellSort(T arr[], int n) { for(int d=n/2;d>=1;d/=2) { for (int i = d; i < n; i++) { T temp = arr[i]; int j = i;//保存元素temp应该插入的位置 for (; j ...原创 2018-07-28 22:39:02 · 138 阅读 · 0 评论 -
冒泡排序与改进
基本冒泡排序思路:一趟冒泡排序对相邻元素进行比较,无序则进行交换。 改进思路:对无序区域边界进行标记,若有序区域范围较大,进行下一趟冒泡排序时可以提前结束。 //冒泡排序 template<typename T> void BubbleSort1(T arr[], int n) { for (int i = 0; i < n; i++) { //一趟冒泡排序 ...原创 2018-07-28 21:42:17 · 867 阅读 · 0 评论 -
插入排序
插入排序及改进 //插入排序 template<typename T> void InsertionSort(T arr[], int n) { for (int i = 1; i < n; i++) { //寻找arr[i]合适的插入位置 //写法1 /*for (int j = i; j > 0; j--) { if (arr[j ...原创 2018-07-28 18:37:47 · 130 阅读 · 0 评论 -
IT人的算法书单:挖掘程序的灵魂
IT人的算法书单:挖掘程序的灵魂 薯条酱 2017-05-02 12:10:54 浏览316 评论0 算法 程序员 人工智能 编程 数据结构 书单 点击打开链接 摘要: 算法始源于千百年前,中国古代就有各种的算法,比如今天我们依旧在使用的辗转相除法等等,甚至《九章算术》其实可以称之为一本算法书。在茫茫的书籍的海洋中,有关算法的书籍多不胜数,然而经历过大浪转载 2017-05-19 10:59:09 · 534 阅读 · 0 评论