排序算法for循环写法详解:轻松掌握基础编程技巧

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 个数字,手动模拟每一步变化。这样能更快发现循环条件是否写错,交换逻辑有没有漏洞。装机完成后第一件事,不妨就用这段代码试试编译器能不能正常跑起来。