C语言-选择排序算法
选择排序
要求
输入一个正整数n( 1 < n ≤ 10 1<n\le10 1<n≤10),再输入n个整数,用选择排序法将它们从小到大排序后输出。
算法步骤
- 第一步:在未排序的 n 个数(a[0] ~ a[n - 1])中找到最小数,将它与 a[0] 交换;
- 第二步:在剩下未排序的 n - 1 个数(a[1] ~ a[n - 1])中找到最小数,将它与 a[1] 交换;
- ……
- 第 n - 1 步:在剩下未排序的2个数(a[n - 2] ~ a[n - 1])中找到最小数,将它与 a[1] 交换;
算法流程图
示例源代码
/* 选择法排序 */
#include <stdio.h>
int main()
{
int i, index, k, n, temp;
int a[10]; // 定义1个数组a,它有10个整型元素
printf("Enter n:"); // 提示输入n
scanf("%d", &n);
printf("Enter %d integers:", n); // 提示输入n个数
for (i = 0; i < n; i++) // 将输入数一次赋给数组a的n个元素a[0]~a[n-1]
scanf("%d", &a[i]);
/* 对n个数排序 */
for (k = 0; k < n - 1; k++)
{
index = k; // index存放最小值所在的下标
for (i = k + 1; i < n; i++) // 寻找最小值所在的下标
if (a[i] < a[index])
index = i;
temp = a[index]; // 最小元素与下标k的元素交换
a[index] = a[k];
a[k] = temp;
}
printf("After sorted:");
for (i = 0; i < n; i++)
printf("%d", a[i]);
printf("\n");
return 0;
}
运行结果
Enter n:5
Enter 5 integers:3 5 2 8 1
After sorted:1 2 3 5 8
摘自高等教育出版社《C语言程序设计(第3版)》(何钦铭,颜晖主编)
m0_63242431: 大佬求源码!1394748022@qq.com
m0_74522189: 大佬求源码!1472505822@qq.com
繁花满庭: 大佬,求源码!2137694894@qq.com
sjidfuewh: 大佬,求源码,3187903917@qq.com
爱编程的小芯: 这个实在不太方便提供