4Key音游段位单曲成绩计算的程序实现
前言
其实这个坑我很早以前就想开了,在我刚开始学编程那会就一直想写一个这个东西。但苦于数学进度没达到,要用到加权平均数,这东西我前两天才学到,之前对数学也一直是懒得学的状态,要不然几乎是看不懂那个算法的。
……关于互联网、书籍、生活琐事以及那些一闪而过的念头
其实这个坑我很早以前就想开了,在我刚开始学编程那会就一直想写一个这个东西。但苦于数学进度没达到,要用到加权平均数,这东西我前两天才学到,之前对数学也一直是懒得学的状态,要不然几乎是看不懂那个算法的。
……哈希表(Hash Table)是一种基于键(Key)直接访问数据的高效数据结构,其核心思想是通过哈希函数将键映射到数组的特定位置,从而实现平均时间复杂度为 O(1)O(1) 的插入、查找和删除操作。
……今天学这个东西的时候,看到这种线性的数据结构加上排序步骤,很难不想写个程序来跑跑。
先来说说中位数,这个比较有思路。
具体的操作步骤应该是:排序 => 获得数据元素个数n => 是奇数 ? (n+1) / 2 : n / 2
……二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树。
……栈(Stack)是一种后进先出(LIFO)原则的线性数据结构。核心操作包括:
使用动态数组实现栈,包含三个核心属性:
……通过相邻元素的两两比较,将较大的元素逐步“冒泡”到数组末尾,每轮排序确定一个最大元素的最终位置。
void bubble_sort(int arr[], int n) {
// 最外层控制循环轮数 n-1轮
for (int i = 0; i < n - 1; i++) {
// 内层循环处理相邻元素比较和交换
for(int j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
// 调用
void print_array(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d,", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = {23, 232, 55, 2, 7, 0, 576, 342};
int n = sizeof(arr) / sizeof(arr[0]);
printf("排序前:");
print_array(arr, n);
bubble_sort(arr, n);
printf("排序后");
print_array(arr, n);
}
示例验证:
……