蓝桥杯国赛——第六战(算法)
注:
最近阅读了基本简单的算法书籍,但是没有上手使用过。综合考虑算法的性能和比赛的使用情景,简单复现几个。
详细可以参考:《算法图解-巴尔加瓦》、《大话数据结构》;
排序方法:
排序方法各有优劣,这里我就随便选择一种记录来常用。以后如果需要更高效率再修正。
直接来个插入排序,代码简单,原理易懂
【上面的链接含动图说明和各种语言编写的例程】
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
void insertion_sort(int arr[], int len){ int i,j,key; for (i=1;i<len;i++){ key = arr[i]; j=i-1; while((j>=0) && (arr[j]>key)) { arr[j+1] = arr[j]; j--; } arr[j+1] = key; } }
软件滤波:
使用算数平均滤波即可,比赛中实际需要的不多。
(6条消息) 10种软件滤波方法_cugwyman的博客-CSDN博客_软件滤波器
#define N 12 char filter() { int sum = 0; for ( count=0;count<N;count++) { sum + = get_ad(); delay(); } return (char)(sum/N); }