ref="/tag/433/" style="color:#E3A3CF;font-weight:bold;">排序算法for循环写法详解:轻松掌握基础编程技巧
刚装好开发环境,准备写点代码练手?排序算法是每个新手绕不开的坎。其中最常用的实现方式就是用 for 循环来控制遍历和比较。别被术语吓到,其实它就像整理书桌一样简单——把乱放的书按大小顺序一本本摆好。
比如你有一堆考试成绩单,现在要从小到大排个序。冒泡排序是最直观的选择,它的核心思想是:两两比较相邻元素,如果前面比后面大,就交换位置。这个过程通过嵌套 for 循环就能搞定。
冒泡排序的 for 循环写法
假设有一个整数数组 data,长度为 n。外层 for 循环控制排序轮数,内层负责每一轮的比较和交换。
int data[] = {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 (data[j] > data[j + 1]) {
int temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}这里外层 i 从 0 到 n-2,表示一共要进行 n-1 轮排序。内层 j 的范围随着 i 增加而缩小,因为每轮结束后最大的数都会“冒”到末尾,不需要再参与后续比较。
选择排序的 for 实现方式
另一种常见写法是选择排序。它的逻辑更像挑选手中的最佳人选:每次从未排序部分找出最小值,放到已排序部分的末尾。
int data[] = {64, 34, 25, 12, 22};
int n = 5;
for (int i = 0; i < n - 1; i++) {
int min_index = i;
for (int j = i + 1; j < n; j++) {
if (data[j] < data[min_index]) {
min_index = j;
}
}
if (min_index != i) {
int temp = data[i];
data[i] = data[min_index];
data[min_index] = temp;
}
}外层循环确定当前要放置的位置 i,内层则在 i+1 到末尾之间寻找最小值的索引。找到后与 i 位置交换。虽然效率不算高,但逻辑清晰,适合初学者理解数组操作。
这两种写法都依赖于 for 循环的精确控制能力。外层决定整体进度,内层处理细节比较。写的时候注意边界条件,比如 j 最大只能取到 n-2(冒泡)或 n-1(选择),避免数组越界。
实际编码中,可以先在小数据上测试,比如 5 个数字,手动模拟每一步变化。这样能更快发现循环条件是否写错,交换逻辑有没有漏洞。装机完成后第一件事,不妨就用这段代码试试编译器能不能正常跑起来。