随笔分类 -  算法

摘要:一.质数 1.试除法判断素数: #include<bits/stdc++.h> using namespace std; bool is_prime(int n) { if(n<2) return false; for(int i=2;i<=n/i;i++){ //如果用sqrt(n),每次执行都要 阅读全文
posted @ 2020-07-19 18:46 JLNU-航 阅读(196) 评论(0) 推荐(1) 编辑
摘要:01背包 二维代码: 阅读全文
posted @ 2020-05-09 21:10 JLNU-航 阅读(78) 评论(0) 推荐(0) 编辑
摘要:1.题目: 2.逆序对的定义: 对于数列的第 i 个和第 j 个元素,如果满足 i a[j],则其为一个逆序对。 一个元素可以不只是在一个逆序对中存在。如果 k j i 且 a[i] a[j] a[k],那么这里 有两个逆序对,分别是 (a[i], a[j]) 和 (a[i], a[k]), a[i 阅读全文
posted @ 2020-04-26 14:13 JLNU-航 阅读(318) 评论(0) 推荐(0) 编辑
摘要:直接插入排序:通过构建有序序列,对于未排序数据,选出第一个元素,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序因而在从后向前扫描过程中, 需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 我们可以吧一个序列分为有序区段和无序区段,如图: 代码: ` ` 阅读全文
posted @ 2020-04-26 09:50 JLNU-航 阅读(91) 评论(0) 推荐(0) 编辑
摘要:冒泡排序: 越大的元素会经由交换慢慢"浮"到数列的顶端,故名"冒泡排序",每趟都会将当前序列的最大元素放在后面,且冒泡排序分从大到小和从小到大两种排序方式。它们的唯一区别就是两个数交换的条件不同,从大到小排序是前面的数比后面的小的时候交换, 而从小到大排序是前面的数比后面的数大的时候交换。下面是冒泡 阅读全文
posted @ 2020-04-26 09:49 JLNU-航 阅读(109) 评论(0) 推荐(0) 编辑
摘要:快速排序,说白了就是给基准数据找其正确索引位置的过程. 如下图所示,假设最开始的基准数据为数组第一个元素23,则首先用一个临时变量去存储基准数据,即tmp=23;然后分别从数组的两端扫描数组,设两个指示标志:low指向起始位置,high指向末尾. 首先从后半部分开始,如果扫描到的值大于基准数据就让h 阅读全文
posted @ 2020-04-26 09:38 JLNU-航 阅读(132) 评论(0) 推荐(0) 编辑
摘要:归并排序是稳定的。 让左右两部分的元素先有序,然后把两个有序的部分合并为一个有序的过程。递归去做。 归并排序(MERGE SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide and conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解, 而治(co 阅读全文
posted @ 2020-04-16 19:09 JLNU-航 阅读(221) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示