- 排序算法
- 选择排序
简单选择排序
在n个数据中,依次选择最大或最小数据放在已排序数据后面。
注意位置交换
时间复杂度O(n^2)
void select_sort(int data[], int len)
{
int outer_idx, inner_idx;
int min_pos;
int min_val;
int i, cnt=0;
printf("未排序数据\t:");
for (i = 0; i < len; i++)
printf("%d\t", data[i]);
printf("\n");
for (outer_idx = 0; outer_idx < len-1; outer_idx++) {//外层循环执行n-1次
min_val = data[outer_idx];
min_pos = outer_idx;
cnt++;
for (inner_idx = outer_idx + 1; inner_idx < len;inner_idx++) {//内层循环从外层+1开始
if (min_val > data[inner_idx]) {
min_val = data[inner_idx];
min_pos = inner_idx;
}
}
data[min_pos] = data[outer_idx];
data[outer_idx] = min_val;
printf("第%d次排序结果为:",cnt);
for (i = 0; i < len; i++)
printf("%d\t", data[i]);
printf("\n");
}
}