C算法C 算法
鲸落辰空冒泡排序 / 起泡法
- 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。以下为核心代码段,可单独作为排序函数
1 2 3 4 5 6 7 8 9 10 11 12
| for (int i = 0; i < n; 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; } } }
|
选择排序
- 选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。以下为核心代码段,可单独作为排序函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| for (int i = 0; i < n - 1; i++) { int minIndex = i; for (int j = i + 1; j < n; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } int temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; }
|
递归
- 递归(Recursion)是一种编程技巧,它利用函数的调用自身的特点,来解决一些问题。递归函数一般都有一个基线条件,当这个条件满足时,递归函数就停止调用自身,并返回一个基准值。以下为递归函数的模板
注意:递归函数的调用栈的最大深度受限于系统的内存限制,因此,在计算量大的情况下,递归函数的使用要慎重
1 2 3 4 5 6 7 8 9 10 11
| int factorial(int n) { if (n == 1) { return 1; } else { return n * factorial(n - 1); } }
|
记忆化搜索 TODO