排序算法很多地方都会用到,近期又重新看了一遍算法,并自己简单地实现了一遍,特此记录下来,为以后复习留点材料。 废话不多说,下面逐一看看经典的排序算法: 1、Java排序算法之选择排序 选择排序的基本思想是遍历数组的过程中,以 i 代表当前需要排序的序号,则需要在剩余的 [i…n-1] 中找出其中的最 ...
分类:
编程语言 时间:
2020-05-22 13:04:35
阅读次数:
50
今天是重刷一本通的第二天 今天刷的是第二章的数据排序 这次呢 题有点多 直接放上前两个题的代码罢 T1车厢重组 /*T1车厢重组 这个小水题我们直接用冒泡排序过了罢*/ #include<iostream> using namespace std; int main(){ int n,a[n+1]= ...
分类:
其他好文 时间:
2020-05-21 00:38:00
阅读次数:
74
//merge sort //合并有序序列 //没有改变相等元素的前后位置 #include<iostream> #include<vector> using namespace std; void merge(vector<int>& v, int left, int right, int rig ...
分类:
编程语言 时间:
2020-05-20 20:06:28
阅读次数:
71
数据结构与算法 关于算法的代码写了一些在:https://gitee.com/yuan_yi_xiang/data_structure_algorithm欢迎指正 基础的数据结构: 数组、链表、栈、队列 基础排序算法: 冒泡排序o(n2)、插入排序o(n2)、选择排序o(n2) 归并排序和快速排序都 ...
分类:
编程语言 时间:
2020-05-20 12:05:17
阅读次数:
73
"题目链接" 记忆化搜索 这是一道区间DP的模板题。初学dp的话还是记忆化搜索好理解一些,很多dp其实也是从记忆化搜索转换过来的。考虑最后一步,我们要把两堆石子合并成一堆,那么肯定是某一个点为分割点分成的两堆石子,而这两堆石子也是由某一个点为分割点组成的,如此递推下去。所以我们倒着把一堆石子拆成两堆 ...
分类:
其他好文 时间:
2020-05-19 12:49:37
阅读次数:
62
思路,将一个数组不断拆分,拆到一个元素之后,倒过来一步步排好序,获得新的数组 [55,23,66,905,56,85,356,30,57,34,832,230] left=[55,23,66,905,56,85] right=[356,30,57,34,832,230] left可以看成一个新数组, ...
分类:
编程语言 时间:
2020-05-18 18:18:53
阅读次数:
64
## java最新面试题2020# 一面 1. 手撕twosum代码,手撕归并排序,还有一个题忘了,我记得是用hashmap做2. 讲一下Java垃圾回收分代回收各种算法3. Java内存结构4. Java堆存哪些数据5. 讲一下四种引用6. Java语言的特性7. 抽象,多态8. 项目中一个模块具... ...
分类:
编程语言 时间:
2020-05-18 14:08:18
阅读次数:
147
快速排序 时间复杂度:O(nlogn) def partition(li, left, right): tmp = li[left] while left < right: while left < right and li[right] >= tmp: # 从右边找比tmp小的数 right -= ...
分类:
编程语言 时间:
2020-05-17 17:45:40
阅读次数:
64
一、归并排序 先通过递归将列表元素分开,然后通过合并比较大小进行排序。 二、上代码 def merge(li, low, mid, high): """ 归并排序 :param li:参数列表 :param low: 列表最左边 :param mid: 列表中间的 :param high: 列表最右 ...
分类:
编程语言 时间:
2020-05-17 13:31:42
阅读次数:
83