在日常ref="/tag/190/" style="color:#8B0506;font-weight:bold;">办公中,经常要对一些数据进行整理,比如销售排行榜、员工考勤顺序、项目完成进度等。虽然Excel有排序功能,但如果你用编程或脚本处理数据,掌握排序算法的for循环写法就特别实用。
冒泡排序:最直观的for循环实现
冒泡排序是入门级排序算法,逻辑简单,适合刚接触循环嵌套的人理解。它的核心是通过双重for循环,逐个比较相邻元素,把较大的“冒泡”到数组末尾。
int arr[] = {64, 34, 25, 12, 22};
int n = 5;
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;
}
}
}
比如你有一组客户投诉数量的数据,想从小到大排列找出问题最少的部门,这段代码就能快速搞定。
选择排序:更高效的for循环结构
选择排序每次从剩余未排序部分选出最小值,放到已排序序列的末尾。它同样使用双重for循环,但交换次数比冒泡少,更适合处理稍大数据量。
int arr[] = {29, 10, 14, 37, 13};
int n = 5;
for (int i = 0; i < n - 1; i++) {
int min_idx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
像统计每月加班时长,你想快速找出最少的那个月,用这个方法一跑就出结果。
插入排序:适合小数据的流畅写法
插入排序像整理扑克牌,每次拿一张新牌,插入前面已排好序的位置。它的for循环从第二个元素开始,向前比较并移动元素。
int arr[] = {12, 11, 13, 5, 6};
int n = 5;
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
当你需要实时录入并排序少量数据,比如每天更新的来访人数,插入排序响应快又稳定。
这些for循环写的排序算法虽然基础,但在处理导出的CSV数据、自动化报表生成时非常实用。哪怕你不常写代码,了解它们的结构也能帮你更好理解自动化工具背后的逻辑。