数据结构总目录
简单选择排序
1. 图文解析
遍历序列,每次在当前位置向后扫描序列,记下最小值的位置,然后将最小值与当前位置的值交换
排序过程
序列:{
5, 4, 3, 2, 1 } 从小到大排列 第一轮:{
[5], 4, 3, 2, 1 } 当前位置:[5] 在后序序列{
4,3,2,1 }中查找比[5]小的最小值[1] 交换位置得:{
1, 4, 3, 2, 5 } 第二轮:{
1, [4], 3, 2, 5] 当前位置:[4] 在后序序列{
3, 2, 5 }中查找比[4]小的最小值[2] 交换位置得:{
1, 2, 3, 4, 5 } 第三轮:[1,2,(3),4,5] 当前位置:[3] 在后序序列{
4, 5 }中查找比[3]小的最小值--(无) 排序结束
2. 源代码
#include <stdio.h> #define size 10 void SelectSort(int *num, int len) {
int i, j, min, temp; for (i = 0; i < len; i++) {
// 初始最小值下标 min = i; // 查找后面最小值的下标 for (j = i + 1; j < len; j++) {
if (num[min] > num[j]) {
min = j; } } // 交换最小值 if (min != i) {
temp = num[i]; num[i] = num[min]; num[min] = temp; } } } int main() {
int i, num[size] = {
65874, 432, 45, 54, 541, 32, 213, 2, 354, 342}; SelectSort(num, size); for (i = 0; i < size; i++) {
printf("%d ", num[i]); } printf("\n"); return 0; }
3. 测试结果
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233318.html原文链接:https://javaforall.net