C语言实现选择排序
【摘要】 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 过程演示:#include <stdio.h>void swap(int *, int *);void selection_sort(...
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 过程演示:

#include <stdio.h>
void swap(int *, int *);
void selection_sort(int [], int);
int main() {
int arr[] = {3, -1, 4, 5, 8, 7, 6, 4, 2, 3};
selection_sort(arr, sizeof(arr) / sizeof(arr[0]));
printf("排序结果:\n");
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
printf("%d ", arr[i]);
}
return 0;
}
void selection_sort(int arr[], int length) {
for (int i = 0 ; i < length - 1 ; i++)//由于每次都是和后面的数字比较,所以最后一位不需要循环
{
int min = i;
for (int j = i + 1; j < length; j++) {//循环未排序好的数组,找出最小值
if (arr[j] < arr[min]) {
min = j; //记录最小值
}
}
swap(&arr[min], &arr[i]); //将最小值交换到最前面,排序好
}
}
/**
* 交换2个数
* @param a
* @param b
*/
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)