惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
云风的 BLOG
云风的 BLOG
小众软件
小众软件
V
V2EX
博客园 - Franky
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
量子位
博客园 - 【当耐特】
雷峰网
雷峰网
WordPress大学
WordPress大学
Jina AI
Jina AI
Google DeepMind News
Google DeepMind News
N
Netflix TechBlog - Medium
爱范儿
爱范儿
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
V
Visual Studio Blog
Microsoft Security Blog
Microsoft Security Blog

青空之蓝

[青空之蓝-2023] - 色彩 | 青空之蓝 [青空之蓝-2022] - 平静 | 青空之蓝 [青空之蓝-2021] - 远望 | 青空之蓝 浅谈垃圾回收 | 青空之蓝 浅谈泛型擦除 | 青空之蓝 浅谈单点登录 | 青空之蓝 使用 Kotlin 编写 Spring 测试 | 青空之蓝 设计模式系列文章 | 青空之蓝 从零实现一个 Java 微框架 - IoC | 青空之蓝 从零实现一个 Java 微框架 - 前言 | 青空之蓝 浅谈 JVM:类加载 | 青空之蓝 浅谈 IO | 青空之蓝 浅谈并发:synchronized & ReentrantLock | 青空之蓝 浅谈并发:CAS & AQS | 青空之蓝 浅谈并发:ThreadLocal | 青空之蓝 浅谈并发:三大特性 | 青空之蓝 浅谈组合注解 & 注解别名 | 青空之蓝 [青空之蓝-2020]-迷茫 | 青空之蓝 Java 系列文章 | 青空之蓝 HTTP 系列文章 | 青空之蓝 浅谈 EatWhatYouKill | 青空之蓝 浅谈可扩展线程池 | 青空之蓝 聊聊写框架 | 青空之蓝 聊聊现状-[2020-09] | 青空之蓝 浅谈并发:锁 | 青空之蓝 浅谈并发:基础 | 青空之蓝 浅谈缓存 | 青空之蓝 无须定义类,Spring 快速注入 Json 参数 | 青空之蓝 浅谈 Proxy 和 Aop | 青空之蓝 从零实现一个 PHP 微框架 - 初始化请求 | 青空之蓝
C 选择排序 | 青空之蓝
Otstar Lin · 2018-10-27 · via 青空之蓝

就按上一篇的格式写吧,其实还有很多 C 笔记可以水几篇文章,偷懒中。。

思想和举例

选择排序同样是通过遍历的方式进行比较排序的,只不过不再是通过不断交换相邻的两个数字,而是遍历搜索最大或最小值然后将最大值或最小值与最后方或者最前方的值进行交换,以此类推直到最后完成排序,具体排序的过程可以查看维基百科,偷懒。。

看什么呢,没有举例~( ̄ ▽  ̄)~

算法总结与实现

不用介绍了直接上算法吧( ̄ ▽  ̄)"

#include <stdio.h>
#define N 10 //定义要排序的数组长度
//选择排序控制Demo
//选择排序结果和方式
//结果:输出排序的数组
//方式:遍历比较
//本例排序从低到高
int main(int argc, char const *argv[])
{
    int nums[N], temp, j, i;
    printf ("请输入要进行排序的数列:\n");
    for (int u = 0; u < 10; u++) //循环输入数组
    {
        scanf ("%d", &nums[u]);
    }

    //
    //升序排列
    //
    printf ("降序排列:\n");
    for (i = 0; i < N; i++) //外层循环,控制循环轮数
    {
        int m = i;
        for (j = i + 1; j < N; j++) //内层循环,控制遍历数组,寻找最小的数,并进行交换指针
        {
            if (nums[m] > nums[j]) //判断附近两个数谁最小
            {
                m = j; //标记最小的数
            }
        }
        temp = nums[m]; //交换最小的数到前方
        nums[m] = nums[i];
        nums[i] = temp;
    }

    //输出排序好是数组
    int u;
    for (u = 0; u < N - 1; u++)
    {
        printf ("%d ", nums[u]);
    }
    printf ("%d\n",nums[u]);

    //
    //降序排列
    //
    //输出排序好是数组
    for (u = N - 1; u > 0; u--)
    {
        printf ("%d ", nums[u]);
    }
    printf ("%d\n",nums[u]);

    return 0;
}
#include <stdio.h>
#define N 10 //定义要排序的数组长度
//选择排序控制Demo
//选择排序结果和方式
//结果:输出排序的数组
//方式:遍历比较
//本例排序从低到高
int main(int argc, char const *argv[])
{
    int nums[N], temp, j, i;
    printf ("请输入要进行排序的数列:\n");
    for (int u = 0; u < 10; u++) //循环输入数组
    {
        scanf ("%d", &nums[u]);
    }

    //
    //升序排列
    //
    printf ("降序排列:\n");
    for (i = 0; i < N; i++) //外层循环,控制循环轮数
    {
        int m = i;
        for (j = i + 1; j < N; j++) //内层循环,控制遍历数组,寻找最小的数,并进行交换指针
        {
            if (nums[m] > nums[j]) //判断附近两个数谁最小
            {
                m = j; //标记最小的数
            }
        }
        temp = nums[m]; //交换最小的数到前方
        nums[m] = nums[i];
        nums[i] = temp;
    }

    //输出排序好是数组
    int u;
    for (u = 0; u < N - 1; u++)
    {
        printf ("%d ", nums[u]);
    }
    printf ("%d\n",nums[u]);

    //
    //降序排列
    //
    //输出排序好是数组
    for (u = N - 1; u > 0; u--)
    {
        printf ("%d ", nums[u]);
    }
    printf ("%d\n",nums[u]);

    return 0;
}

对了,这次采用了循环输入,不用再写很长的输入了ヾ(≧▽≦*)o

C 选择排序

https://blog.ixk.me/post/c-select-sort
  • 许可协议

    BY-NC-SA

  • 本文作者

    Otstar Lin

  • 发布于

    2018/10/27

转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!

VSCode配置Java调试环境[Windows]C 冒泡排序

HomeGitHubStatus

Copyright © 2017-2026 Otstar Lin

Theme Coline by Otstar LinPowered by Next.js