- data: 数据段;数据区;数据库,
- const: 常量;常量定义;取值设为常数。
- sizeof: 类型名;字节数;运算符。
- temp: 临时变量;
- Round: 环绕;
- exchange: 调换,互换;
```c
include
int main() { int data[] = { 3, 2, 4, 9, 10, 6, 8, 1 }; 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;
}
**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;
}
程序运行结果: