挑战程序设计竞赛2习题
MokylinJay
Hello World!
展开
-
ALDS1_2_D:ShellSort
题目地址 希尔排序详解 类似题目 #include<iostream> #include <vector> using namespace std; /* * 希尔排序思路: * 1. 选择增量进行分组 * 2. 在每组内进行插入排序 * 3. 缩小增量再执行1、2,直到增量为1(增量为1时也要在执行一次) */ long long cnt; int a[1000001]; int n; vector<int> G; // 间隔为g的插入排序 void i原创 2020-07-07 08:50:21 · 137 阅读 · 0 评论 -
ALDS1_2_C:StableSort
题目地址 #include<iostream> using namespace std; /* * 稳定排序定义: * 1. 待排序的记录序列中可能存在两个或两个以上关键字相等的记录。 * 2. 排序前的序列中Ri领先于Rj(即i<j).若在排序后的序列中Ri仍然领先于Rj,则称所用的方法是稳定的。 * 常见的稳定排序: * 插入排序,基数排序,归并排序,冒泡排序,计数排序 * 常见的不稳定排序: * 快速排序,希尔排序,简单选择排序,堆排序 * * 本题思路:原创 2020-07-06 09:57:42 · 165 阅读 · 0 评论 -
ALDS1_2_B:SelectionSort
题目地址 #include<iostream> using namespace std; /* * 选择排序思路: * 1. 进行n-1次循环,执行2、3、4操作 * 2. 设置变量i标记已排序位置的末尾后一位 * 3. 设置pos变量标记未排序中最小(大)数的位置 * 4. 将i位置的值与pos位置的值进行交换 * */ int selectionSort(int a[], int n){ int count = 0; for (int i = 0; i <原创 2020-07-06 09:14:51 · 119 阅读 · 0 评论 -
ALDS1_2_B:SelectionSort
题目地址 #include<iostream> using namespace std; /* * 冒泡排序思路: * 1. 进行n-1轮冒泡 * 2. 每一轮冒泡排序,通过相邻元素比较和交换将排序后的最后一个元素归位 * */ int bubbleSort(int a[], int n){ int count = 0; for (int i = 0; i < n-1; i++){ for (int j = 0; j < n-i-1; j+原创 2020-07-05 17:14:26 · 74 阅读 · 0 评论 -
ALDS1_1_A:Insertion Sort
题目地址 #include<iostream> using namespace std; // 插入排序思路: // 1. 将第i个位置的元素的值保存,即v = a[i]; // 2. 从第i-1个元素开始依次向前挪动一位,给即将插入的元素腾出位置,即a[i] = a[i-1]; i--; // 3. 直到插入位置j,挪动停止,即a[j] = v; // 4. 重复以上三步,直到最后一个元素归位 /*输出函数*/ void trace(int a[], int n){ for (i原创 2020-06-30 07:52:08 · 151 阅读 · 0 评论 -
ALDS1_1_D:MaximumProfit
题目地址 #include<iostream> #include <algorithm> using namespace std; // 算法思路: // 遍历所有价格,维护当前利润的最大值和历史价格的最低值 // 当前利润的最大值 = max(当前价格 - 历史价格最小值, 上一次的利润最大值) // 历史价格最低值 = min(当前价格, 上一次的历史价格最小值) int main(){ int maxv, minv; int n, m; int a,原创 2020-06-29 10:51:49 · 162 阅读 · 0 评论