C语言分析基础排序算法——选择排序

目录

选择排序

选择排序

堆排序 


选择排序

选择排序

选择排序的基本思路是,定义两个区间指针begin和end,遍历数组中的每一个数据找出最大的数据的下标和最小的数据的下标,之后与beginend指针分别交换小数据与begin的位置以及大数据和end的数值,具体思路如下

//以下面的数据为例
int data[] = { 23,34,90,16,54,44,78,67 };

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

void swap(int* p1, int* p2)
{
    int tmp = *p1;
    *p1 = *p2;
    *p2 = tmp;
}

void SelectSort(int *data, int sz)
{
    int begin = 0;
    int end = sz - 1;
    while (begin < end)
    {
        int max_i = begin;//最大值下标
        int min_i = begin;//最小值下标
        //遍历数组找到最大值的下标和最小值的下标
        for (int i = begin; i <= end; i++)
        {
            if (data[i] > data[max_i])
            {
                max_i = i;
            }

            if (data[i] < data[min_i])
            {
                min_i = i;
            }
        }

        //走完循环交换最大值和最小值
        swap(&data[begin], &data[min_i]);
        //如果begin和max_i重合,则需要更新max_i
        if (begin == max_i)
        {
            max_i = min_i;
        }
        swap(&data[end], &data[max_i]);

        //更新比较区间
        begin++;
        end--;
    }
}

int main()
{
    int data[] = { 23,34,90,16,54,44,78,67 };
    int sz = sizeof(data) / sizeof(int);
    SelectSort(data, sz);
    for (int i = 0; i < sz; i++)
    {
        printf("%d ", data[i]);
    }
    return 0;
}
输出结果:
16 23 34 44 54 67 78 90

堆排序 

堆排序算法实现与分析见下方的博客文章

堆排序算法及分析-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_73281594/article/details/136407957?spm=1001.2014.3001.5501

相关推荐

  1. C语言实现选择排序算法

    2024-03-11 20:42:03       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 20:42:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 20:42:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 20:42:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 20:42:03       20 阅读

热门阅读

  1. Python 模块

    2024-03-11 20:42:03       22 阅读
  2. pytorch中的dataset和dataloader

    2024-03-11 20:42:03       19 阅读
  3. vim 编辑器

    2024-03-11 20:42:03       21 阅读
  4. 人工智能迷惑行为大赏

    2024-03-11 20:42:03       19 阅读
  5. 20个常用的Python脚本

    2024-03-11 20:42:03       23 阅读
  6. 【C/C++ 学习笔记】流程结构

    2024-03-11 20:42:03       22 阅读
  7. Oracle Foreign key 无索引导致的死锁 deadlock 或者hang

    2024-03-11 20:42:03       20 阅读
  8. 【图解算法-C语言】-- 1.常见算法介绍

    2024-03-11 20:42:03       26 阅读
  9. vue2 elementui 封装一个动态表单复杂组件

    2024-03-11 20:42:03       21 阅读
  10. git的基本概念和用法

    2024-03-11 20:42:03       27 阅读
  11. 系统架构设计基础

    2024-03-11 20:42:03       23 阅读