1. data: 数据段;数据区;数据库,
  2. const: 常量;常量定义;取值设为常数。
  3. sizeof: 类型名;字节数;运算符。
  4. temp: 临时变量;
  5. Round: 环绕;
  6. exchange: 调换,互换; ```c

    include

int main() { int data[] = { 3, 2, 4, 9, 10, 6, 8, 1 }; int const len = sizeof(data) / sizeof(data[0]);

  1. int min, temp;
  2. for (int i = 0; i < len - 1; i++) {
  3. min = i;
  4. for (int j = i + 1; j < len; j++) {
  5. if (data[j] < data[min]) {
  6. min = j;
  7. }
  8. }
  9. if (min == i) {
  10. printf("Round %d: no exchange\n", i);
  11. continue;
  12. }
  13. printf("Round %d: %d <----> %d\n", i, i, min);
  14. temp = data[i];
  15. data[i] = data[min];
  16. data[min] = temp;
  17. }
  18. for (int i = 0; i < len; i++) {
  19. printf("%d ", data[i]);
  20. }
  21. return 0;

}

**sizeof(data) / sizeof(data[0]  是  获取**[**数组**](https://so.csdn.net/so/search?q=%E6%95%B0%E7%BB%84&spm=1001.2101.3001.7020)**的长度**,<br />原理是 sizeof(data) 代表整个数组的大小,sizeof(data[0]) 代表数组中第一个元素的大小,而数组中的每个元素大小都是相同的,所以最后的计算结果就是数组的长度。<br />min == i<br />判断min与i是否相等。
```c
#include <stdio.h>

int main() {
    int data[] = {9,2,8,10,5,7,1,6};
    int const len = sizeof(data) / sizeof(data[0]);

    int min , temp;
    for(int i = 0; i<len-1; i++){
        min = i;

        for (int j=i+1;j<len;j++){
            if (data[j]<data[min]){
                min=j;
            }
        }

        if (min==i) {
            printf("Round %d: no exchange\n",i);
            continue;
        }

        printf("Round %d: %d <---->%d\n",i,i,min);
        temp = data[i];
        data[i] =data [min];
        data[min] = temp;
    }

    for (int i = 0; i <len;i++) {
        printf("%d",data[i]);
    }

    return 0;
}

Selection Sort(选择排序) - 图1
程序运行结果:
6924de559315e8c48155d97682e316e.png